Re: [PATCH] Xen Keyboard: don't advertise every key known to man

2021-05-18 Thread Phillip Susi


Phillip Susi writes:

> Dmitry Torokhov writes:
>
>> By doing this you are stopping delivery of all key events from this
>> device.

Hrm... I don't have very many "interesting" keys to test, but when I hit
the menu key, I see KEY_COMPOSE, which is > KEY_MIN_INTERESTING.  When I
press the button to have my vnc client send a windows key, I see
KEY_LEFTCTRL+KEY_ESC.  I also see KEY_PAUSE when I hit that key and it
is also "interesting".  I get the same thing with or without this patch,
so it does not appear to be breaking delivery of the keys that are no
longer being advertised.

Oddly though, libinput list-devices does not even show the Xen Virtual
Keyboard.  It's sysfs path is /sys/class/input/input1, but it also does
not have a device node in /dev/input so I can't even ask libinput to
only monitor that device.

Ok... this is really odd.. it does show the device without this patch,
and not with it.  The input events I was seeing were coming through the
"AT Translated Set 2 keyboard" and no events come though the Xen Virtual
Keyboard ( even without this patch ).  This makes me wonder why we have
this device at all?



Re: [PATCH] Xen Keyboard: don't advertise every key known to man

2021-05-18 Thread Phillip Susi


Dmitry Torokhov writes:

> By doing this you are stopping delivery of all key events from this
> device.

It does?  How does the PS/2 keyboard driver work then?  It has no way of
knowning what keys the keyboard has other than waiting to see what scan
codes are emitted.

If the keys must be advertised in order to emit them at runtime, then I
see no other possible fix than to remove the codes from the modalias
string in the input subsystem.  Or maybe allow certain drivers that
don't know to set some sort of flag that allows them to emit all codes
at runtime, but NOT advertise them so you end up with a mile long
modalias.




[PATCH] Xen Keyboard: don't advertise every key known to man

2021-05-06 Thread Phillip Susi
For reasons I still don't understand, the input subsystem allows
input devices to advertise what keys they have, and adds this
information to the modalias for the device.  The Xen Virtual
Keyboard was advertising every known key, which resulted in a
modalias string over 2 KiB in length, which caused uevents to
fail with -ENOMEM ( when trying to add the modalias to the env ).
Remove this advertisement.
---
 drivers/input/misc/xen-kbdfront.c | 5 -
 1 file changed, 5 deletions(-)

diff --git a/drivers/input/misc/xen-kbdfront.c 
b/drivers/input/misc/xen-kbdfront.c
index 4ff5cd2a6d8d..d4bd558afda9 100644
--- a/drivers/input/misc/xen-kbdfront.c
+++ b/drivers/input/misc/xen-kbdfront.c
@@ -254,11 +254,6 @@ static int xenkbd_probe(struct xenbus_device *dev,
kbd->id.product = 0x;
 
__set_bit(EV_KEY, kbd->evbit);
-   for (i = KEY_ESC; i < KEY_UNKNOWN; i++)
-   __set_bit(i, kbd->keybit);
-   for (i = KEY_OK; i < KEY_MAX; i++)
-   __set_bit(i, kbd->keybit);
-
ret = input_register_device(kbd);
if (ret) {
input_free_device(kbd);
-- 
2.30.2




Re: Xen Virtual Keyboard modalias breaking uevents

2021-04-30 Thread Phillip Susi


Dmitry Torokhov writes:

> I don't know why Xen keyboard exports that many keycodes ;) In general,
> my recommendation is to mirror the physical device when possible, and
> instantiate several devices so there is 1:1 relationship between virtual
> and physical devices.

I'm still trying to wrap my head around why keys are even declared in
the first place.  PS/2 ports have no idea what keys are on the keyboard
plugged into them, so I guess they don't declare any?  And that doesn't
stop them from emitting any of the scan codes, so what is the use in
declaring them in the first place?

A lot of "interesting" buttons don't seem very interesting to me, such
as left and right parenthesis.  Is a user space mail program really
going to bypass X11/wayland and open input devices directly to look for
someone to press the "send mail" key?  Even if it did, why would it only
want to open a keyboard that advertises that it has such a key instead
of listening to all keyboards?  Even if all USB keyboards report all of
their special keys, the fact that you could still have a PS/2 keyboard
that has a "send mail" key on it means that the reporting function can
not be relied on and so you just have to listen on all keyboards anyhow.

I guess as long as not reporting keys doesn't stop you from using them,
then the Xen Virtual Keyboard driver should just report none, like the
PS/2 keyboard driver.



Re: Xen Virtual Keyboard modalias breaking uevents

2021-04-29 Thread Phillip Susi


Dmitry Torokhov writes:

> Userspace may or may not have access to sysfs (it does not have to be
> mounted)

How would userspace even enumerate the input devices and read their
modalias without sysfs?



Re: Xen Virtual Keyboard modalias breaking uevents

2021-04-29 Thread Phillip Susi


Dmitry Torokhov writes:

> Not every keyboard, but all keycodes above KEY_MIN_INTERESTING which is
> KEY_MUTE, so that interested handlers could match on devices they are
> interested in without first opening them or poking through sysfs.

/Shouldn't/ they be reading sysfs attributes to find that information
out though?  Isn't modalias there to help modprobe find the right module
that wants to bind to this device, which doesn't happen for input
devices?  If user space is looking at this information then isn't it
getting it by reading from sysfs anyway?

What in user space looks at input devices other than X and Wayland?  And
those aren't looking for particular "interesting" keys are they?

> I don't know why Xen keyboard exports that many keycodes ;) In general,
> my recommendation is to mirror the physical device when possible, and
> instantiate several devices so there is 1:1 relationship between virtual
> and physical devices.

Xen guys: any input as to why it supports so many "interesting" keys?




Re: Xen Virtual Keyboard modalias breaking uevents

2021-04-29 Thread Phillip Susi


It appears that input/input.c is responsible for the insane modalias
length.  If I am reading input_print_modalias() correctly, it appends a
"k" plus every key code that the keyboard supports, and the Xen Virtual
Keyboard supports a lot of keycodes.  Why does it do this?

Phillip Susi writes:

> So I have finally drilled down to the modalias for the Xen Virtual
> Keyboard driver being so long ( over 2KB ) that it causes an -ENOMEM
> when trying to add it to the environment for uevents.  This causes
> coldplug to fail, which causes the script doing coldplug as part of the
> debian-installer init to fail, which causes a kernel panic when init
> exits, which then for reasons I have yet to understand, causes the Xen
> domU to reboot.
>
> Why is this modalias so huge?  Can we pare it down, or or is there
> another solution to get uevents working on this device again?  Maybe the
> environment block size needs to be increased?  I don't know.




Xen Virtual Keyboard modalias breaking uevents

2021-04-29 Thread Phillip Susi
So I have finally drilled down to the modalias for the Xen Virtual
Keyboard driver being so long ( over 2KB ) that it causes an -ENOMEM
when trying to add it to the environment for uevents.  This causes
coldplug to fail, which causes the script doing coldplug as part of the
debian-installer init to fail, which causes a kernel panic when init
exits, which then for reasons I have yet to understand, causes the Xen
domU to reboot.

Why is this modalias so huge?  Can we pare it down, or or is there
another solution to get uevents working on this device again?  Maybe the
environment block size needs to be increased?  I don't know.




Re: kexec not working in xen domU?

2020-12-18 Thread Phillip Susi


Phillip Susi writes:

> I tried with -s and it didn't help.  So far I tried it originally on my
> Ubuntu 20.04 amazon vps, then on my debian testing ( linux 5.9.0 ) on my
> local xen server.  I'll try building the latest upstream kernel and
> kexec tomorrow.

Built the latest kexec-tools and linux kernel from git today and get
the same results.  Is there a minimum version of xen required for this
to work?  I have no idea what Amazon is running but my server has 4.9.



Re: kexec not working in xen domU?

2020-12-17 Thread Phillip Susi


Guilherme G. Piccoli writes:

> Hm..not many prints, either earlyprintk didn't work, or it's a really
> early boot issue. Might worth to investigate if it's not a purgatory
> issue too - did you try to use the ""new"" kexec syscall, by running
> "kexec -s -l" instead of just "kexec -l" ?
> Also, worth to try that with upstream kernel and kexec-tools - I
> assume you're doing that already?

I tried with -s and it didn't help.  So far I tried it originally on my
Ubuntu 20.04 amazon vps, then on my debian testing ( linux 5.9.0 ) on my
local xen server.  I'll try building the latest upstream kernel and
kexec tomorrow.



Re: kexec not working in xen domU?

2020-12-14 Thread Phillip Susi


Guilherme G. Piccoli writes:

> Can you capture the serial console in a pastebin? Maybe add something
> like "earlyprintk=ttySX", where ttySX is your known-to-work serial
> console output. This helps to determine if it's a shutdown issue or an
> early boot problem.

The regular xen cosole should work for this shouldn't it?  So
earlyprintk=hvc0 I guess?  I also threw in console=hvc0 and loglevel=7:

[  184.734810] systemd-shutdown[1]: Syncing filesystems and block
devices.
[  185.772511] systemd-shutdown[1]: Sending SIGTERM to remaining
processes...
[  185.896957] systemd-shutdown[1]: Sending SIGKILL to remaining
processes...
[  185.90] systemd-shutdown[1]: Unmounting file systems.
[  185.902180] [1035]: Remounting '/' read-only in with options
'errors=remount-ro'.
[  185.990634] EXT4-fs (xvda1): re-mounted. Opts: errors=remount-ro
[  186.002373] systemd-shutdown[1]: All filesystems unmounted.
[  186.002411] systemd-shutdown[1]: Deactivating swaps.
[  186.002502] systemd-shutdown[1]: All swaps deactivated.
[  186.002529] systemd-shutdown[1]: Detaching loop devices.
[  186.002699] systemd-shutdown[1]: All loop devices detached.
[  186.002727] systemd-shutdown[1]: Stopping MD devices.
[  186.002814] systemd-shutdown[1]: All MD devices stopped.
[  186.002840] systemd-shutdown[1]: Detaching DM devices.
[  186.002974] systemd-shutdown[1]: All DM devices detached.
[  186.003017] systemd-shutdown[1]: All filesystems, swaps, loop
devices, MD devices and DM devices detached.
[  186.168475] systemd-shutdown[1]: Syncing filesystems and block
devices.
[  186.169150] systemd-shutdown[1]: Rebooting with kexec.
[  186.418653] xenbus_probe_frontend: xenbus_frontend_dev_shutdown:
device/vbd/5632: Initialising != Connected, skipping
[  186.427377] kexec_core: Starting new kernel