* [PATCH v4 4/4] iio: hid-sensor-als: Add light chromaticity support
From: Srinivas Pandruvada @ 2024-02-04 13:03 UTC (permalink / raw)
To: jikos, jic23, lars, Basavaraj.Natikar
Cc: linux-input, linux-iio, linux-kernel, Srinivas Pandruvada
In-Reply-To: <20240204130332.2635760-1-srinivas.pandruvada@linux.intel.com>
From: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
On some platforms, ambient color sensors also support the x and y light
colors, which represent the coordinates on the CIE 1931 chromaticity
diagram. Add light chromaticity x and y.
Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
v4:
- Index is fixed for each channel instead of packing for absent channels
v3:
Simplilified as no special processing is required in als_parse_report()
v2:
Original patch from Basavaraj Natikar <Basavaraj.Natikar@amd.com> is
modified to prevent failure when the new usage id is not found in the
descriptor.
drivers/iio/light/hid-sensor-als.c | 46 ++++++++++++++++++++++++++++++
include/linux/hid-sensor-ids.h | 3 ++
2 files changed, 49 insertions(+)
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index 0e9a25c51676..3c8f707c18cf 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -17,6 +17,8 @@ enum {
CHANNEL_SCAN_INDEX_INTENSITY,
CHANNEL_SCAN_INDEX_ILLUM,
CHANNEL_SCAN_INDEX_COLOR_TEMP,
+ CHANNEL_SCAN_INDEX_CHROMATICITY_X,
+ CHANNEL_SCAN_INDEX_CHROMATICITY_Y,
CHANNEL_SCAN_INDEX_MAX
};
@@ -44,6 +46,8 @@ static const u32 als_usage_ids[] = {
HID_USAGE_SENSOR_LIGHT_ILLUM,
HID_USAGE_SENSOR_LIGHT_ILLUM,
HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE,
+ HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X,
+ HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y,
};
static const u32 als_sensitivity_addresses[] = {
@@ -85,6 +89,30 @@ static const struct iio_chan_spec als_channels[] = {
BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
.scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP,
},
+ {
+ .type = IIO_CHROMATICITY,
+ .modified = 1,
+ .channel2 = IIO_MOD_X,
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+ BIT(IIO_CHAN_INFO_SCALE) |
+ BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
+ .scan_index = CHANNEL_SCAN_INDEX_CHROMATICITY_X,
+ },
+ {
+ .type = IIO_CHROMATICITY,
+ .modified = 1,
+ .channel2 = IIO_MOD_Y,
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+ BIT(IIO_CHAN_INFO_SCALE) |
+ BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
+ .scan_index = CHANNEL_SCAN_INDEX_CHROMATICITY_Y,
+ },
IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
};
@@ -130,6 +158,16 @@ static int als_read_raw(struct iio_dev *indio_dev,
min = als_state->als[chan->scan_index].logical_minimum;
address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE;
break;
+ case CHANNEL_SCAN_INDEX_CHROMATICITY_X:
+ report_id = als_state->als[chan->scan_index].report_id;
+ min = als_state->als[chan->scan_index].logical_minimum;
+ address = HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X;
+ break;
+ case CHANNEL_SCAN_INDEX_CHROMATICITY_Y:
+ report_id = als_state->als[chan->scan_index].report_id;
+ min = als_state->als[chan->scan_index].logical_minimum;
+ address = HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y;
+ break;
default:
report_id = -1;
break;
@@ -254,6 +292,14 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
als_state->scan.illum[CHANNEL_SCAN_INDEX_COLOR_TEMP] = sample_data;
ret = 0;
break;
+ case HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X:
+ als_state->scan.illum[CHANNEL_SCAN_INDEX_CHROMATICITY_X] = sample_data;
+ ret = 0;
+ break;
+ case HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y:
+ als_state->scan.illum[CHANNEL_SCAN_INDEX_CHROMATICITY_Y] = sample_data;
+ ret = 0;
+ break;
case HID_USAGE_SENSOR_TIME_TIMESTAMP:
als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes,
*(s64 *)raw_data);
diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h
index 8af4fb3e0254..6730ee900ee1 100644
--- a/include/linux/hid-sensor-ids.h
+++ b/include/linux/hid-sensor-ids.h
@@ -22,6 +22,9 @@
#define HID_USAGE_SENSOR_DATA_LIGHT 0x2004d0
#define HID_USAGE_SENSOR_LIGHT_ILLUM 0x2004d1
#define HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE 0x2004d2
+#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY 0x2004d3
+#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X 0x2004d4
+#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y 0x2004d5
/* PROX (200011) */
#define HID_USAGE_SENSOR_PROX 0x200011
--
2.43.0
^ permalink raw reply related
* Re: [PATCH v3 1/4] iio: hid-sensor-als: Assign channels dynamically
From: Srinivas Pandruvada @ 2024-02-04 13:06 UTC (permalink / raw)
To: Jonathan Cameron
Cc: jikos, lars, Basavaraj.Natikar, linux-input, linux-iio,
linux-kernel
In-Reply-To: <20240113160320.09584c4e@jic23-huawei>
Hi Jonathan,
On 1/13/24 08:03, Jonathan Cameron wrote:
> On Tue, 9 Jan 2024 10:00:04 -0800
> Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> wrote:
>
>> Instead of assuming that every channel defined statically by
>> als_channels[] is present, assign dynamically based on presence of the
>> respective usage id in the descriptor. This will allow to register ALS
>> with limited channel support. Append the timestamp as the last channel.
>>
>> When not all usage ids are present, the scan index is adjusted to
>> exclude unsupported channels.
>>
>> There is no intentional function changes done.
>>
>> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
>> ---
>> v3:
>> Addressed comments from Jonthan:
>> - Remove channel allocation and move to iio_priv()
>> - Parse all usage IDs in a single loop and continue
>> for failure. This way the temperature and chromaticity
>> will not need any special processing to parse usage ids.
>> - Don't leave empty channel indexes
> There isn't really a problem if you did want to leave them.
> There are a number of other devices that do leave gaps and userspace
> code shouldn't mind that. I don't mind them being more tightly packed
> though so this is also fine.
Submitted v4 leaving gaps.
>
>
> I was just looking at the driver and noticed one other oddity.
> In als_capture_sample, it always returns -EINVAL if the timestamp channel
> is being queried.
Correct. But hid-sensor-hub core ignores return value, so it doesn't
cause any issue.
But I sent a separate patch to fix this.
>
>> v2:
>> New change
>>
>> drivers/iio/light/hid-sensor-als.c | 56 +++++++++++++++++++++---------
>> 1 file changed, 39 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
>> index 5cd27f04b45e..72a7c01c97f8 100644
>> --- a/drivers/iio/light/hid-sensor-als.c
>> +++ b/drivers/iio/light/hid-sensor-als.c
>> @@ -25,17 +25,26 @@ struct als_state {
>> struct hid_sensor_hub_callbacks callbacks;
>> struct hid_sensor_common common_attributes;
>> struct hid_sensor_hub_attribute_info als[CHANNEL_SCAN_INDEX_MAX];
>> + struct iio_chan_spec channels[CHANNEL_SCAN_INDEX_MAX + 1];
>> struct {
>> u32 illum[CHANNEL_SCAN_INDEX_MAX];
>> + u32 scan_index[CHANNEL_SCAN_INDEX_MAX];
> This looks unlikely to end up right with a varying number of channels.
> I'm assuming the device always captures all available channels.
> As such, if there are 2 channels the timestamp will end up at byte 8 onwards.
> If there are 3 channels, byte 16 onwards etc.
>
> Usually when we have a floating timestamp like this we just rely on expanding
> the channel array to leave space and force the alignment of that to be suitable
> for taking a timestamp.
>
> I'm a bit confused not to see available_scan_mask being set though.
> If userspace previously requested illumination only would the data
> have ended up in the right location (offset 0?)
Add this.
> If you set available_scan_masks to specify all channels then the
> IIO core will move things around for you. If it's not provided then
> it is up to the driver to figure out where to put the data.
>
> Otherwise the patch looks fine to me.
Please check v4, if it solve the above issues.
Thanks,
Srinivas
> Jonathan
>
>
>
>> u64 timestamp __aligned(8);
>> } scan;
>> int scale_pre_decml;
>> int scale_post_decml;
>> int scale_precision;
>> int value_offset;
>> + int num_channels;
>> s64 timestamp;
>> };
>>
>> +/* The order of usage ids must match scan index starting from CHANNEL_SCAN_INDEX_INTENSITY */
>> +static const u32 als_usage_ids[] = {
>> + HID_USAGE_SENSOR_LIGHT_ILLUM,
>> + HID_USAGE_SENSOR_LIGHT_ILLUM,
>> +};
>> +
>> static const u32 als_sensitivity_addresses[] = {
>> HID_USAGE_SENSOR_DATA_LIGHT,
>> HID_USAGE_SENSOR_LIGHT_ILLUM,
>> @@ -216,11 +225,14 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
>> struct als_state *als_state = iio_priv(indio_dev);
>> int ret = -EINVAL;
>> u32 sample_data = *(u32 *)raw_data;
>> + int scan_index;
>>
>> switch (usage_id) {
>> case HID_USAGE_SENSOR_LIGHT_ILLUM:
>> - als_state->scan.illum[CHANNEL_SCAN_INDEX_INTENSITY] = sample_data;
>> - als_state->scan.illum[CHANNEL_SCAN_INDEX_ILLUM] = sample_data;
>> + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_INTENSITY];
>> + als_state->scan.illum[scan_index] = sample_data;
>> + scan_index = als_state->scan.scan_index[CHANNEL_SCAN_INDEX_ILLUM];
>> + als_state->scan.illum[scan_index] = sample_data;
>> ret = 0;
>> break;
>> case HID_USAGE_SENSOR_TIME_TIMESTAMP:
>> @@ -237,27 +249,39 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
>> /* Parse report which is specific to an usage id*/
>> static int als_parse_report(struct platform_device *pdev,
>> struct hid_sensor_hub_device *hsdev,
>> - struct iio_chan_spec *channels,
>> unsigned usage_id,
>> struct als_state *st)
>> {
>> - int ret;
>> + struct iio_chan_spec *channels;
>> + int ret, index = 0;
>> int i;
>>
>> + channels = st->channels;
>> +
>> for (i = 0; i <= CHANNEL_SCAN_INDEX_ILLUM; ++i) {
>> ret = sensor_hub_input_get_attribute_info(hsdev,
>> HID_INPUT_REPORT,
>> usage_id,
>> - HID_USAGE_SENSOR_LIGHT_ILLUM,
>> + als_usage_ids[i],
>> &st->als[i]);
>> if (ret < 0)
>> - return ret;
>> - als_adjust_channel_bit_mask(channels, i, st->als[i].size);
>> + continue;
>> +
>> + channels[index] = als_channels[i];
>> + st->scan.scan_index[i] = index;
>> +
>> + als_adjust_channel_bit_mask(channels, index, st->als[i].size);
>> + ++index;
>>
>> dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index,
>> st->als[i].report_id);
>> }
>>
>> + st->num_channels = index;
>> + /* Return success even if one usage id is present */
>> + if (index)
>> + ret = 0;
>> +
>> st->scale_precision = hid_sensor_format_scale(usage_id,
>> &st->als[CHANNEL_SCAN_INDEX_INTENSITY],
>> &st->scale_pre_decml, &st->scale_post_decml);
>> @@ -293,15 +317,7 @@ static int hid_als_probe(struct platform_device *pdev)
>> return ret;
>> }
>>
>> - indio_dev->channels = devm_kmemdup(&pdev->dev, als_channels,
>> - sizeof(als_channels), GFP_KERNEL);
>> - if (!indio_dev->channels) {
>> - dev_err(&pdev->dev, "failed to duplicate channels\n");
>> - return -ENOMEM;
>> - }
>> -
>> ret = als_parse_report(pdev, hsdev,
>> - (struct iio_chan_spec *)indio_dev->channels,
>> hsdev->usage,
>> als_state);
>> if (ret) {
>> @@ -309,8 +325,14 @@ static int hid_als_probe(struct platform_device *pdev)
>> return ret;
>> }
>>
>> - indio_dev->num_channels =
>> - ARRAY_SIZE(als_channels);
>> + /* Add timestamp channel */
>> + als_state->channels[als_state->num_channels] = als_channels[CHANNEL_SCAN_INDEX_TIMESTAMP];
>> + als_state->channels[als_state->num_channels].scan_index = als_state->num_channels;
>> +
>> + /* +1 for adding timestamp channel */
>> + indio_dev->num_channels = als_state->num_channels + 1;
>> +
>> + indio_dev->channels = als_state->channels;
>> indio_dev->info = &als_info;
>> indio_dev->name = name;
>> indio_dev->modes = INDIO_DIRECT_MODE;
^ permalink raw reply
* Re: + XPS 13 9343
From: Antoine @ 2024-02-04 13:18 UTC (permalink / raw)
To: 1061521, hdegoede
Cc: Dell.Client.Kernel, linux-input, linux-kernel, linux-pm, pmenzel,
regressions
In-Reply-To: <a6093a70-29bf-458d-b981-bcd95af7b472@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 868 bytes --]
On 2/4/24 08:24, Hans de Goede wrote:
> The issue of the kbd on some Dell XPS models no longer
> working after a suspend/resume cycle should be fixed by
> these 2 patches which are on their way to Linus' tree:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git/commit/?h=for-linus&id=683cd8259a9b883a51973511f860976db2550a6e
> https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git/commit/?h=for-linus&id=9cf6e24c9fbf17e52de9fff07f12be7565ea6d61
Hi Hans, and thanks,
Just completing my feedback, I am also unable to reproduce the problem
in eight ACPI S3 suspend/resume cycles on my XPS 13 9343;
Tested from Linus' tree on 6.8.0-rc2 (cf attached dmesg)
And on top of debian's testing,unstable one 6.6.13-1,
with attached patch (thus including initial patch "Input: atkbd - skip
ATKBD_CMD_GETID in translated mode")
best regards,
Antoine
[-- Attachment #2: 99_fix_keyboard_after_resume_on_dell_xps13-9343-9350-9360-9370.patch --]
[-- Type: text/x-patch, Size: 1865 bytes --]
diff -Naur 6.6.13-1_debian/drivers/input/keyboard/atkbd.c 6.8.0-rc2/drivers/input/keyboard/atkbd.c
--- 6.6.13-1/drivers/input/keyboard/atkbd.c 2024-01-20 11:51:49.000000000 +0100
+++ 6.8.0-rc2/drivers/input/keyboard/atkbd.c 2024-02-04 08:13:05.273965270 +0100
@@ -791,9 +791,9 @@
* not work. So in this case simply assume a keyboard is connected to avoid
* confusing some laptop keyboards.
*
- * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using a fake id is
- * ok in translated mode, only atkbd_select_set() checks atkbd->id and in
- * translated mode that is a no-op.
+ * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using the standard
+ * 0xab83 id is ok in translated mode, only atkbd_select_set() checks atkbd->id
+ * and in translated mode that is a no-op.
*/
static bool atkbd_skip_getid(struct atkbd *atkbd)
{
@@ -824,6 +824,11 @@
"keyboard reset failed on %s\n",
ps2dev->serio->phys);
+ if (atkbd_skip_getid(atkbd)) {
+ atkbd->id = 0xab83;
+ goto deactivate_kbd;
+ }
+
/*
* Then we check the keyboard ID. We should get 0xab83 under normal conditions.
* Some keyboards report different values, but the first byte is always 0xab or
@@ -832,10 +837,10 @@
*/
param[0] = param[1] = 0xa5; /* initialize with invalid values */
- if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
+ if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
/*
- * If the get ID command was skipped or failed, we check if we can at least set
+ * If the get ID command failed, we check if we can at least set
* the LEDs on the keyboard. This should work on every keyboard out there.
* It also turns the LEDs off, which we want anyway.
*/
@@ -858,6 +863,7 @@
return -1;
}
+deactivate_kbd:
/*
* Make sure nothing is coming from the keyboard and disturbs our
* internal state.
[-- Attachment #3: dmesg.log --]
[-- Type: text/x-log, Size: 78253 bytes --]
[ 0.000000] Linux version 6.8.0-rc2-xps13-9343_2 (me@zx) (gcc (Debian 13.2.0-10) 13.2.0, GNU ld (GNU Binutils for Debian) 2.41.90.20240122) #10 SMP PREEMPT_DYNAMIC Sun Feb 4 06:20:31 CET 2024
[ 0.000000] Command line: \\boot\vmlinuz-6.8.0-rc2-xps13-9343_2 ro root=UUID=f88efbd2-19f5-4f2f-a8ce-6c1e1255119b initrd=boot\initrd.img-6.8.0-rc2-xps13-9343_2
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000009efff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009f000-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000c7d97fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000c7d98000-0x00000000c8255fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000c8256000-0x00000000dadcffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000dadd0000-0x00000000dae92fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000dae93000-0x00000000daebcfff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x00000000daebd000-0x00000000db7f4fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000db7f5000-0x00000000dbafefff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000dbaff000-0x00000000dbafffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000dd000000-0x00000000df7fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed03fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000021f7fffff] usable
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] APIC: Static calls initialized
[ 0.000000] e820: update [mem 0xc4385018-0xc4395057] usable ==> usable
[ 0.000000] e820: update [mem 0xc4385018-0xc4395057] usable ==> usable
[ 0.000000] extended physical RAM map:
[ 0.000000] reserve setup_data: [mem 0x0000000000000000-0x0000000000057fff] usable
[ 0.000000] reserve setup_data: [mem 0x0000000000058000-0x0000000000058fff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000000059000-0x000000000009efff] usable
[ 0.000000] reserve setup_data: [mem 0x000000000009f000-0x000000000009ffff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000000100000-0x00000000c4385017] usable
[ 0.000000] reserve setup_data: [mem 0x00000000c4385018-0x00000000c4395057] usable
[ 0.000000] reserve setup_data: [mem 0x00000000c4395058-0x00000000c7d97fff] usable
[ 0.000000] reserve setup_data: [mem 0x00000000c7d98000-0x00000000c8255fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000c8256000-0x00000000dadcffff] usable
[ 0.000000] reserve setup_data: [mem 0x00000000dadd0000-0x00000000dae92fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000dae93000-0x00000000daebcfff] ACPI data
[ 0.000000] reserve setup_data: [mem 0x00000000daebd000-0x00000000db7f4fff] ACPI NVS
[ 0.000000] reserve setup_data: [mem 0x00000000db7f5000-0x00000000dbafefff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000dbaff000-0x00000000dbafffff] usable
[ 0.000000] reserve setup_data: [mem 0x00000000dd000000-0x00000000df7fffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fed00000-0x00000000fed03fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000100000000-0x000000021f7fffff] usable
[ 0.000000] efi: EFI v2.3.1 by American Megatrends
[ 0.000000] efi: ACPI=0xdae9c000 ACPI 2.0=0xdae9c000 SMBIOS=0xf0570 INITRD=0xc449cf98
[ 0.000000] efi: Remove mem42: MMIO range=[0xf8000000-0xfbffffff] (64MB) from e820 map
[ 0.000000] e820: remove [mem 0xf8000000-0xfbffffff] reserved
[ 0.000000] efi: Not removing mem43: MMIO range=[0xfec00000-0xfec00fff] (4KB) from e820 map
[ 0.000000] efi: Not removing mem44: MMIO range=[0xfed00000-0xfed03fff] (16KB) from e820 map
[ 0.000000] efi: Not removing mem45: MMIO range=[0xfed1c000-0xfed1ffff] (16KB) from e820 map
[ 0.000000] efi: Not removing mem46: MMIO range=[0xfee00000-0xfee00fff] (4KB) from e820 map
[ 0.000000] efi: Remove mem47: MMIO range=[0xff000000-0xffffffff] (16MB) from e820 map
[ 0.000000] e820: remove [mem 0xff000000-0xffffffff] reserved
[ 0.000000] SMBIOS 2.8 present.
[ 0.000000] DMI: Dell Inc. XPS 13 9343/0TM99H, BIOS A19 12/24/2018
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.000000] tsc: Detected 2194.720 MHz processor
[ 0.000841] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000844] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000853] last_pfn = 0x21f800 max_arch_pfn = 0x400000000
[ 0.000858] MTRR map: 7 entries (3 fixed + 4 variable; max 23), built from 10 variable MTRRs
[ 0.000860] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT
[ 0.001166] e820: update [mem 0xdd000000-0xffffffff] usable ==> reserved
[ 0.001170] last_pfn = 0xdbb00 max_arch_pfn = 0x400000000
[ 0.009581] found SMP MP-table at [mem 0x000fda50-0x000fda5f]
[ 0.009599] Using GB pages for direct mapping
[ 0.010203] Secure boot disabled
[ 0.010203] RAMDISK: [mem 0xc08e4000-0xc2a93fff]
[ 0.010208] ACPI: Early table checksum verification disabled
[ 0.010211] ACPI: RSDP 0x00000000DAE9C000 000024 (v02 DELL )
[ 0.010215] ACPI: XSDT 0x00000000DAE9C0A8 0000CC (v01 DELL CBX3 01072009 AMI 00010013)
[ 0.010222] ACPI: FACP 0x00000000DAEAF748 00010C (v05 DELL CBX3 01072009 AMI 00010013)
[ 0.010227] ACPI: DSDT 0x00000000DAE9C200 013544 (v02 DELL CBX3 01072009 INTL 20120913)
[ 0.010231] ACPI: FACS 0x00000000DB7F2F80 000040
[ 0.010234] ACPI: APIC 0x00000000DAEAF858 000084 (v03 DELL CBX3 01072009 AMI 00010013)
[ 0.010237] ACPI: FPDT 0x00000000DAEAF8E0 000044 (v01 DELL CBX3 01072009 AMI 00010013)
[ 0.010241] ACPI: FIDT 0x00000000DAEAF928 00009C (v01 DELL CBX3 01072009 AMI 00010013)
[ 0.010244] ACPI: MCFG 0x00000000DAEAF9C8 00003C (v01 DELL CBX3 01072009 MSFT 00000097)
[ 0.010247] ACPI: HPET 0x00000000DAEAFA08 000038 (v01 DELL CBX3 01072009 AMI. 00000005)
[ 0.010251] ACPI: SSDT 0x00000000DAEAFA40 000455 (v01 SataRe SataTabl 00001000 INTL 20120913)
[ 0.010254] ACPI: UEFI 0x00000000DAEAFE98 000042 (v01 00000000 00000000)
[ 0.010258] ACPI: SSDT 0x00000000DAEAFEE0 000CDB (v02 Ther_R Ther_Rvp 00001000 INTL 20120913)
[ 0.010262] ACPI: ASF! 0x00000000DAEB0BC0 0000A0 (v32 INTEL HCG 00000001 TFSM 000F4240)
[ 0.010265] ACPI: SSDT 0x00000000DAEB0C60 00051F (v02 PmRef Cpu0Ist 00003000 INTL 20120913)
[ 0.010269] ACPI: SSDT 0x00000000DAEB1180 000B74 (v02 CpuRef CpuSsdt 00003000 INTL 20120913)
[ 0.010272] ACPI: SSDT 0x00000000DAEB1CF8 0001C7 (v02 PmRef LakeTiny 00003000 INTL 20120913)
[ 0.010276] ACPI: SSDT 0x00000000DAEB1EC0 0003A5 (v02 CppcTa CppcTabl 00001000 INTL 20120913)
[ 0.010279] ACPI: PCCT 0x00000000DAEB2268 00006E (v05 PcctTa PcctTabl 00001000 INTL 20120913)
[ 0.010282] ACPI: SSDT 0x00000000DAEB22D8 000AC4 (v02 Cpc_Ta Cpc_Tabl 00001000 INTL 20120913)
[ 0.010286] ACPI: SSDT 0x00000000DAEB2DA0 004207 (v02 SaSsdt SaSsdt 00003000 INTL 20120913)
[ 0.010289] ACPI: SSDT 0x00000000DAEB6FA8 004646 (v01 DptfTa DptfTabl 00001000 INTL 20120913)
[ 0.010293] ACPI: DMAR 0x00000000DAEBB5F0 0000D4 (v01 INTEL BDW 00000001 INTL 00000001)
[ 0.010296] ACPI: CSRT 0x00000000DAEBB6C8 0000C4 (v01 INTL BDW-ULT 00000001 INTL 20100528)
[ 0.010300] ACPI: BGRT 0x00000000DAEBB790 000038 (v00 \xf3\xee 01072009 AMI 00010013)
[ 0.010302] ACPI: Reserving FACP table memory at [mem 0xdaeaf748-0xdaeaf853]
[ 0.010304] ACPI: Reserving DSDT table memory at [mem 0xdae9c200-0xdaeaf743]
[ 0.010305] ACPI: Reserving FACS table memory at [mem 0xdb7f2f80-0xdb7f2fbf]
[ 0.010306] ACPI: Reserving APIC table memory at [mem 0xdaeaf858-0xdaeaf8db]
[ 0.010307] ACPI: Reserving FPDT table memory at [mem 0xdaeaf8e0-0xdaeaf923]
[ 0.010308] ACPI: Reserving FIDT table memory at [mem 0xdaeaf928-0xdaeaf9c3]
[ 0.010308] ACPI: Reserving MCFG table memory at [mem 0xdaeaf9c8-0xdaeafa03]
[ 0.010309] ACPI: Reserving HPET table memory at [mem 0xdaeafa08-0xdaeafa3f]
[ 0.010310] ACPI: Reserving SSDT table memory at [mem 0xdaeafa40-0xdaeafe94]
[ 0.010311] ACPI: Reserving UEFI table memory at [mem 0xdaeafe98-0xdaeafed9]
[ 0.010312] ACPI: Reserving SSDT table memory at [mem 0xdaeafee0-0xdaeb0bba]
[ 0.010313] ACPI: Reserving ASF! table memory at [mem 0xdaeb0bc0-0xdaeb0c5f]
[ 0.010314] ACPI: Reserving SSDT table memory at [mem 0xdaeb0c60-0xdaeb117e]
[ 0.010315] ACPI: Reserving SSDT table memory at [mem 0xdaeb1180-0xdaeb1cf3]
[ 0.010315] ACPI: Reserving SSDT table memory at [mem 0xdaeb1cf8-0xdaeb1ebe]
[ 0.010316] ACPI: Reserving SSDT table memory at [mem 0xdaeb1ec0-0xdaeb2264]
[ 0.010317] ACPI: Reserving PCCT table memory at [mem 0xdaeb2268-0xdaeb22d5]
[ 0.010318] ACPI: Reserving SSDT table memory at [mem 0xdaeb22d8-0xdaeb2d9b]
[ 0.010319] ACPI: Reserving SSDT table memory at [mem 0xdaeb2da0-0xdaeb6fa6]
[ 0.010320] ACPI: Reserving SSDT table memory at [mem 0xdaeb6fa8-0xdaebb5ed]
[ 0.010320] ACPI: Reserving DMAR table memory at [mem 0xdaebb5f0-0xdaebb6c3]
[ 0.010321] ACPI: Reserving CSRT table memory at [mem 0xdaebb6c8-0xdaebb78b]
[ 0.010322] ACPI: Reserving BGRT table memory at [mem 0xdaebb790-0xdaebb7c7]
[ 0.010330] ACPI: DMI detected: DELL XPS 13 (2015) (force ACPI _REV to 5)
[ 0.010381] No NUMA configuration found
[ 0.010382] Faking a node at [mem 0x0000000000000000-0x000000021f7fffff]
[ 0.010392] NODE_DATA(0) allocated [mem 0x21f7d3000-0x21f7fdfff]
[ 0.010598] Zone ranges:
[ 0.010599] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.010601] DMA32 [mem 0x0000000001000000-0x00000000ffffffff]
[ 0.010602] Normal [mem 0x0000000100000000-0x000000021f7fffff]
[ 0.010604] Device empty
[ 0.010605] Movable zone start for each node
[ 0.010608] Early memory node ranges
[ 0.010609] node 0: [mem 0x0000000000001000-0x0000000000057fff]
[ 0.010610] node 0: [mem 0x0000000000059000-0x000000000009efff]
[ 0.010611] node 0: [mem 0x0000000000100000-0x00000000c7d97fff]
[ 0.010613] node 0: [mem 0x00000000c8256000-0x00000000dadcffff]
[ 0.010614] node 0: [mem 0x00000000dbaff000-0x00000000dbafffff]
[ 0.010615] node 0: [mem 0x0000000100000000-0x000000021f7fffff]
[ 0.010616] Initmem setup node 0 [mem 0x0000000000001000-0x000000021f7fffff]
[ 0.010621] On node 0, zone DMA: 1 pages in unavailable ranges
[ 0.010622] On node 0, zone DMA: 1 pages in unavailable ranges
[ 0.010645] On node 0, zone DMA: 97 pages in unavailable ranges
[ 0.016460] On node 0, zone DMA32: 1214 pages in unavailable ranges
[ 0.016494] On node 0, zone DMA32: 3375 pages in unavailable ranges
[ 0.016984] On node 0, zone Normal: 17664 pages in unavailable ranges
[ 0.017005] On node 0, zone Normal: 2048 pages in unavailable ranges
[ 0.017013] Reserving Intel graphics memory at [mem 0xdd800000-0xdf7fffff]
[ 0.017093] ACPI: PM-Timer IO Port: 0x1808
[ 0.017101] ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x0])
[ 0.017102] ACPI: NMI not connected to LINT 1!
[ 0.017103] ACPI: LAPIC_NMI (acpi_id[0x02] low level lint[0xff])
[ 0.017104] ACPI: NMI not connected to LINT 1!
[ 0.017105] ACPI: LAPIC_NMI (acpi_id[0x03] res level lint[0x0])
[ 0.017106] ACPI: NMI not connected to LINT 1!
[ 0.017106] ACPI: LAPIC_NMI (acpi_id[0x04] high dfl lint[0x81])
[ 0.017107] ACPI: NMI not connected to LINT 1!
[ 0.017117] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-39
[ 0.017120] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.017122] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.017127] ACPI: Using ACPI (MADT) for SMP configuration information
[ 0.017128] ACPI: HPET id: 0x8086a701 base: 0xfed00000
[ 0.017137] e820: update [mem 0xcdce9000-0xcdd71fff] usable ==> reserved
[ 0.017150] TSC deadline timer available
[ 0.017151] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[ 0.017169] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[ 0.017171] PM: hibernation: Registered nosave memory: [mem 0x00058000-0x00058fff]
[ 0.017173] PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
[ 0.017174] PM: hibernation: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[ 0.017175] PM: hibernation: Registered nosave memory: [mem 0xc4385000-0xc4385fff]
[ 0.017177] PM: hibernation: Registered nosave memory: [mem 0xc4395000-0xc4395fff]
[ 0.017179] PM: hibernation: Registered nosave memory: [mem 0xc7d98000-0xc8255fff]
[ 0.017180] PM: hibernation: Registered nosave memory: [mem 0xcdce9000-0xcdd71fff]
[ 0.017182] PM: hibernation: Registered nosave memory: [mem 0xdadd0000-0xdae92fff]
[ 0.017183] PM: hibernation: Registered nosave memory: [mem 0xdae93000-0xdaebcfff]
[ 0.017184] PM: hibernation: Registered nosave memory: [mem 0xdaebd000-0xdb7f4fff]
[ 0.017185] PM: hibernation: Registered nosave memory: [mem 0xdb7f5000-0xdbafefff]
[ 0.017186] PM: hibernation: Registered nosave memory: [mem 0xdbb00000-0xdcffffff]
[ 0.017187] PM: hibernation: Registered nosave memory: [mem 0xdd000000-0xdf7fffff]
[ 0.017188] PM: hibernation: Registered nosave memory: [mem 0xdf800000-0xfebfffff]
[ 0.017189] PM: hibernation: Registered nosave memory: [mem 0xfec00000-0xfec00fff]
[ 0.017189] PM: hibernation: Registered nosave memory: [mem 0xfec01000-0xfecfffff]
[ 0.017190] PM: hibernation: Registered nosave memory: [mem 0xfed00000-0xfed03fff]
[ 0.017191] PM: hibernation: Registered nosave memory: [mem 0xfed04000-0xfed1bfff]
[ 0.017192] PM: hibernation: Registered nosave memory: [mem 0xfed1c000-0xfed1ffff]
[ 0.017192] PM: hibernation: Registered nosave memory: [mem 0xfed20000-0xfedfffff]
[ 0.017193] PM: hibernation: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[ 0.017194] PM: hibernation: Registered nosave memory: [mem 0xfee01000-0xffffffff]
[ 0.017196] [mem 0xdf800000-0xfebfffff] available for PCI devices
[ 0.017197] Booting paravirtualized kernel on bare hardware
[ 0.017199] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[ 0.022408] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[ 0.022744] percpu: Embedded 63 pages/cpu s221184 r8192 d28672 u524288
[ 0.022752] pcpu-alloc: s221184 r8192 d28672 u524288 alloc=1*2097152
[ 0.022754] pcpu-alloc: [0] 0 1 2 3
[ 0.022777] Kernel command line: \\boot\vmlinuz-6.8.0-rc2-xps13-9343_2 ro root=UUID=f88efbd2-19f5-4f2f-a8ce-6c1e1255119b initrd=boot\initrd.img-6.8.0-rc2-xps13-9343_2
[ 0.022857] random: crng init done
[ 0.023690] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[ 0.024111] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[ 0.024196] Fallback order for Node 0: 0
[ 0.024200] Built 1 zonelists, mobility grouping on. Total pages: 2040206
[ 0.024201] Policy zone: Normal
[ 0.024208] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[ 0.024216] software IO TLB: area num 4.
[ 0.048040] Memory: 3246128K/8291008K available (14336K kernel code, 2331K rwdata, 5832K rodata, 3968K init, 3736K bss, 610708K reserved, 0K cma-reserved)
[ 0.048294] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.048309] Kernel/User page tables isolation: enabled
[ 0.048340] ftrace: allocating 42601 entries in 167 pages
[ 0.056480] ftrace: allocated 167 pages with 5 groups
[ 0.057219] Dynamic Preempt: voluntary
[ 0.057257] rcu: Preemptible hierarchical RCU implementation.
[ 0.057258] rcu: RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=4.
[ 0.057259] Trampoline variant of Tasks RCU enabled.
[ 0.057260] Rude variant of Tasks RCU enabled.
[ 0.057260] Tracing variant of Tasks RCU enabled.
[ 0.057261] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[ 0.057262] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.060264] NR_IRQS: 524544, nr_irqs: 728, preallocated irqs: 16
[ 0.060455] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.060523] Console: colour dummy device 80x25
[ 0.060526] printk: legacy console [tty0] enabled
[ 0.060962] ACPI: Core revision 20230628
[ 0.061078] ACPI: OSL: Overriding _REV return value to 5
[ 0.061087] hpet: HPET dysfunctional in PC10. Force disabled.
[ 0.061089] APIC: Switch to symmetric I/O mode setup
[ 0.061093] DMAR: Host address width 39
[ 0.061095] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.061103] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 7e1ff0505e
[ 0.061108] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.061113] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c20660462 ecap f010da
[ 0.061118] DMAR: RMRR base: 0x000000db9f7000 end: 0x000000dba05fff
[ 0.061121] DMAR: RMRR base: 0x000000dd000000 end: 0x000000df7fffff
[ 0.061124] DMAR: ANDD device: 1 name: \_SB.PCI0.SDMA
[ 0.061128] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.061131] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.061133] DMAR-IR: x2apic is disabled because BIOS sets x2apic opt out bit.
[ 0.061134] DMAR-IR: Use 'intremap=no_x2apic_optout' to override the BIOS setting.
[ 0.061702] DMAR-IR: Enabled IRQ remapping in xapic mode
[ 0.061707] x2apic: IRQ remapping doesn't support X2APIC mode
[ 0.062210] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x1fa2b7126b8, max_idle_ns: 440795311860 ns
[ 0.062221] Calibrating delay loop (skipped), value calculated using timer frequency.. 4389.44 BogoMIPS (lpj=8778880)
[ 0.062251] CPU0: Thermal monitoring enabled (TM1)
[ 0.062283] process: using mwait in idle threads
[ 0.062288] Last level iTLB entries: 4KB 64, 2MB 8, 4MB 8
[ 0.062291] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4
[ 0.062295] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[ 0.062300] Spectre V2 : Mitigation: Retpolines
[ 0.062302] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[ 0.062305] Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
[ 0.062308] Spectre V2 : Enabling Restricted Speculation for firmware calls
[ 0.062311] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[ 0.062315] Spectre V2 : User space: Mitigation: STIBP via prctl
[ 0.062318] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[ 0.062323] MDS: Mitigation: Clear CPU buffers
[ 0.062325] MMIO Stale Data: Unknown: No mitigations
[ 0.062328] SRBDS: Mitigation: Microcode
[ 0.062334] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.062337] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.062340] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.062343] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.062346] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[ 0.066217] Freeing SMP alternatives memory: 36K
[ 0.066217] pid_max: default: 32768 minimum: 301
[ 0.066217] LSM: initializing lsm=lockdown,capability,landlock,yama,apparmor,tomoyo,bpf,integrity
[ 0.066217] landlock: Up and running.
[ 0.066217] Yama: becoming mindful.
[ 0.066217] AppArmor: AppArmor initialized
[ 0.066217] TOMOYO Linux initialized
[ 0.066217] LSM support for eBPF active
[ 0.066217] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.066217] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.066217] smpboot: CPU0: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz (family: 0x6, model: 0x3d, stepping: 0x4)
[ 0.066217] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1.
[ 0.066217] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1.
[ 0.066217] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1.
[ 0.066217] Performance Events: PEBS fmt2+, Broadwell events, 16-deep LBR, full-width counters, Intel PMU driver.
[ 0.066217] ... version: 3
[ 0.066217] ... bit width: 48
[ 0.066217] ... generic registers: 4
[ 0.066217] ... value mask: 0000ffffffffffff
[ 0.066217] ... max period: 00007fffffffffff
[ 0.066217] ... fixed-purpose events: 3
[ 0.066217] ... event mask: 000000070000000f
[ 0.066217] signal: max sigframe size: 1776
[ 0.066217] Estimated ratio of average max frequency by base frequency (times 1024): 1163
[ 0.066217] rcu: Hierarchical SRCU implementation.
[ 0.066217] rcu: Max phase no-delay instances is 1000.
[ 0.066217] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[ 0.066217] smp: Bringing up secondary CPUs ...
[ 0.066217] smpboot: x86: Booting SMP configuration:
[ 0.066217] .... node #0, CPUs: #1 #2 #3
[ 0.066217] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
[ 0.066217] smp: Brought up 1 node, 4 CPUs
[ 0.066217] smpboot: Max logical packages: 1
[ 0.066217] smpboot: Total of 4 processors activated (17557.76 BogoMIPS)
[ 0.074246] node 0 deferred pages initialised in 8ms
[ 0.074673] devtmpfs: initialized
[ 0.074673] x86/mm: Memory block size: 128MB
[ 0.075145] ACPI: PM: Registering ACPI NVS region [mem 0xdaebd000-0xdb7f4fff] (9666560 bytes)
[ 0.075145] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.075145] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.075145] pinctrl core: initialized pinctrl subsystem
[ 0.075145] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.075320] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations
[ 0.075423] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[ 0.075523] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[ 0.075535] audit: initializing netlink subsys (disabled)
[ 0.075546] audit: type=2000 audit(1707025022.012:1): state=initialized audit_enabled=0 res=1
[ 0.075546] thermal_sys: Registered thermal governor 'fair_share'
[ 0.075546] thermal_sys: Registered thermal governor 'bang_bang'
[ 0.075546] thermal_sys: Registered thermal governor 'step_wise'
[ 0.075546] thermal_sys: Registered thermal governor 'user_space'
[ 0.075546] thermal_sys: Registered thermal governor 'power_allocator'
[ 0.075546] cpuidle: using governor ladder
[ 0.075546] cpuidle: using governor menu
[ 0.075546] Detected 1 PCC Subspaces
[ 0.075546] Registering PCC driver as Mailbox controller
[ 0.075546] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[ 0.075546] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.075546] PCI: ECAM [mem 0xf8000000-0xfbffffff] (base 0xf8000000) for domain 0000 [bus 00-3f]
[ 0.075546] PCI: not using ECAM ([mem 0xf8000000-0xfbffffff] not reserved)
[ 0.075546] PCI: Using configuration type 1 for base access
[ 0.075546] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[ 0.078240] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[ 0.078244] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
[ 0.078247] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.078250] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[ 0.078305] ACPI: Added _OSI(Module Device)
[ 0.078309] ACPI: Added _OSI(Processor Device)
[ 0.078311] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.078313] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.096445] ACPI: 10 ACPI AML tables successfully acquired and loaded
[ 0.099552] ACPI: Dynamic OEM Table Load:
[ 0.099552] ACPI: SSDT 0xFFFF9AAB01FD6400 0003D3 (v02 PmRef Cpu0Cst 00003001 INTL 20120913)
[ 0.099942] ACPI: Dynamic OEM Table Load:
[ 0.099952] ACPI: SSDT 0xFFFF9AAC17443000 0005AA (v02 PmRef ApIst 00003000 INTL 20120913)
[ 0.103354] ACPI: Dynamic OEM Table Load:
[ 0.103363] ACPI: SSDT 0xFFFF9AAB00D71E00 000119 (v02 PmRef ApCst 00003000 INTL 20120913)
[ 0.105363] ACPI: _OSC evaluated successfully for all CPUs
[ 0.105486] ACPI: EC: EC started
[ 0.105489] ACPI: EC: interrupt blocked
[ 0.108208] ACPI: EC: EC_CMD/EC_SC=0x934, EC_DATA=0x930
[ 0.108213] ACPI: \_SB_.PCI0.LPCB.ECDV: Boot DSDT EC used to handle transactions
[ 0.108217] ACPI: Interpreter enabled
[ 0.108248] ACPI: PM: (supports S0 S3 S4 S5)
[ 0.108250] ACPI: Using IOAPIC for interrupt routing
[ 0.108293] PCI: ECAM [mem 0xf8000000-0xfbffffff] (base 0xf8000000) for domain 0000 [bus 00-3f]
[ 0.108967] PCI: ECAM [mem 0xf8000000-0xfbffffff] reserved as ACPI motherboard resource
[ 0.108978] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.108981] PCI: Using E820 reservations for host bridge windows
[ 0.109497] ACPI: Enabled 6 GPEs in block 00 to 7F
[ 0.111028] ACPI: \_SB_.PCI0.PEG0.PG00: New power resource
[ 0.111403] ACPI: \_SB_.PCI0.PEG1.PG01: New power resource
[ 0.111751] ACPI: \_SB_.PCI0.PEG2.PG02: New power resource
[ 0.128377] ACPI: \_TZ_.FN00: New power resource
[ 0.128443] ACPI: \_TZ_.FN01: New power resource
[ 0.128503] ACPI: \_TZ_.FN02: New power resource
[ 0.128565] ACPI: \_TZ_.FN03: New power resource
[ 0.128624] ACPI: \_TZ_.FN04: New power resource
[ 0.129390] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-3e])
[ 0.129400] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[ 0.129851] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug SHPCHotplug PME AER PCIeCapability LTR]
[ 0.129855] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration
[ 0.130485] PCI host bridge to bus 0000:00
[ 0.130488] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 0.130492] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 0.130495] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[ 0.130499] pci_bus 0000:00: root bus resource [mem 0xdf800000-0xfeafffff window]
[ 0.130502] pci_bus 0000:00: root bus resource [bus 00-3e]
[ 0.130521] pci 0000:00:00.0: [8086:1604] type 00 class 0x060000 conventional PCI endpoint
[ 0.130598] pci 0000:00:02.0: [8086:1616] type 00 class 0x030000 conventional PCI endpoint
[ 0.130609] pci 0000:00:02.0: BAR 0 [mem 0xf6000000-0xf6ffffff 64bit]
[ 0.130616] pci 0000:00:02.0: BAR 2 [mem 0xe0000000-0xefffffff 64bit pref]
[ 0.130622] pci 0000:00:02.0: BAR 4 [io 0xf000-0xf03f]
[ 0.130636] pci 0000:00:02.0: BAR 2: assigned to efifb
[ 0.130639] pci 0000:00:02.0: DMAR: Disabling IOMMU for graphics on this chipset
[ 0.130644] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[ 0.130761] pci 0000:00:03.0: [8086:160c] type 00 class 0x040300 PCIe Root Complex Integrated Endpoint
[ 0.130772] pci 0000:00:03.0: BAR 0 [mem 0xf721c000-0xf721ffff 64bit]
[ 0.130862] pci 0000:00:04.0: [8086:1603] type 00 class 0x118000 conventional PCI endpoint
[ 0.130873] pci 0000:00:04.0: BAR 0 [mem 0xf7210000-0xf7217fff 64bit]
[ 0.130974] pci 0000:00:14.0: [8086:9cb1] type 00 class 0x0c0330 conventional PCI endpoint
[ 0.130990] pci 0000:00:14.0: BAR 0 [mem 0xf7200000-0xf720ffff 64bit]
[ 0.131044] pci 0000:00:14.0: PME# supported from D3hot D3cold
[ 0.131134] pci 0000:00:16.0: [8086:9cba] type 00 class 0x078000 conventional PCI endpoint
[ 0.131153] pci 0000:00:16.0: BAR 0 [mem 0xf7225000-0xf722501f 64bit]
[ 0.131218] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[ 0.131333] pci 0000:00:1b.0: [8086:9ca0] type 00 class 0x040300 conventional PCI endpoint
[ 0.131349] pci 0000:00:1b.0: BAR 0 [mem 0xf7218000-0xf721bfff 64bit]
[ 0.131395] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[ 0.131504] pci 0000:00:1c.0: [8086:9c90] type 01 class 0x060400 PCIe Root Port
[ 0.131529] pci 0000:00:1c.0: PCI bridge to [bus 01]
[ 0.131535] pci 0000:00:1c.0: bridge window [mem 0xf7100000-0xf71fffff]
[ 0.131590] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 0.131820] pci 0000:00:1c.3: [8086:9c96] type 01 class 0x060400 PCIe Root Port
[ 0.131845] pci 0000:00:1c.3: PCI bridge to [bus 02]
[ 0.131851] pci 0000:00:1c.3: bridge window [mem 0xf7000000-0xf70fffff]
[ 0.131905] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[ 0.132129] pci 0000:00:1d.0: [8086:9ca6] type 00 class 0x0c0320 conventional PCI endpoint
[ 0.132146] pci 0000:00:1d.0: BAR 0 [mem 0xf7223000-0xf72233ff]
[ 0.132227] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[ 0.132315] pci 0000:00:1f.0: [8086:9cc3] type 00 class 0x060100 conventional PCI endpoint
[ 0.132507] pci 0000:00:1f.2: [8086:9c83] type 00 class 0x010601 conventional PCI endpoint
[ 0.132520] pci 0000:00:1f.2: BAR 0 [io 0xf0b0-0xf0b7]
[ 0.132527] pci 0000:00:1f.2: BAR 1 [io 0xf0a0-0xf0a3]
[ 0.132534] pci 0000:00:1f.2: BAR 2 [io 0xf090-0xf097]
[ 0.132541] pci 0000:00:1f.2: BAR 3 [io 0xf080-0xf083]
[ 0.132549] pci 0000:00:1f.2: BAR 4 [io 0xf060-0xf07f]
[ 0.132556] pci 0000:00:1f.2: BAR 5 [mem 0xf7222000-0xf72227ff]
[ 0.132588] pci 0000:00:1f.2: PME# supported from D3hot
[ 0.132655] pci 0000:00:1f.3: [8086:9ca2] type 00 class 0x0c0500 conventional PCI endpoint
[ 0.132673] pci 0000:00:1f.3: BAR 0 [mem 0xf7221000-0xf72210ff 64bit]
[ 0.132691] pci 0000:00:1f.3: BAR 4 [io 0xf040-0xf05f]
[ 0.132776] pci 0000:00:1f.6: [8086:9ca4] type 00 class 0x118000 conventional PCI endpoint
[ 0.132801] pci 0000:00:1f.6: BAR 0 [mem 0xf7220000-0xf7220fff 64bit]
[ 0.133026] pci 0000:01:00.0: [10ec:5249] type 00 class 0xff0000 PCIe Endpoint
[ 0.133050] pci 0000:01:00.0: BAR 0 [mem 0xf7100000-0xf7100fff]
[ 0.133186] pci 0000:01:00.0: supports D1 D2
[ 0.133189] pci 0000:01:00.0: PME# supported from D1 D2 D3hot D3cold
[ 0.133423] pci 0000:00:1c.0: PCI bridge to [bus 01]
[ 0.133523] pci 0000:02:00.0: [8086:2526] type 00 class 0x028000 PCIe Endpoint
[ 0.133559] pci 0000:02:00.0: BAR 0 [mem 0xf7000000-0xf7003fff 64bit]
[ 0.133703] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
[ 0.133971] pci 0000:00:1c.3: PCI bridge to [bus 02]
[ 0.136459] ACPI: PCI: Interrupt link LNKA configured for IRQ 11
[ 0.136500] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[ 0.136502] ACPI: PCI: Interrupt link LNKB disabled
[ 0.136539] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[ 0.136541] ACPI: PCI: Interrupt link LNKC disabled
[ 0.136577] ACPI: PCI: Interrupt link LNKD configured for IRQ 10
[ 0.136613] ACPI: PCI: Interrupt link LNKE configured for IRQ 0
[ 0.136615] ACPI: PCI: Interrupt link LNKE disabled
[ 0.136651] ACPI: PCI: Interrupt link LNKF configured for IRQ 3
[ 0.136687] ACPI: PCI: Interrupt link LNKG configured for IRQ 5
[ 0.136723] ACPI: PCI: Interrupt link LNKH configured for IRQ 0
[ 0.136726] ACPI: PCI: Interrupt link LNKH disabled
[ 0.138770] ACPI: EC: interrupt unblocked
[ 0.138774] ACPI: EC: event unblocked
[ 0.138778] ACPI: EC: EC_CMD/EC_SC=0x934, EC_DATA=0x930
[ 0.138781] ACPI: EC: GPE=0x27
[ 0.138783] ACPI: \_SB_.PCI0.LPCB.ECDV: Boot DSDT EC initialization complete
[ 0.138787] ACPI: \_SB_.PCI0.LPCB.ECDV: EC: Used to handle transactions and events
[ 0.138894] iommu: Default domain type: Translated
[ 0.138894] iommu: DMA domain TLB invalidation policy: lazy mode
[ 0.190665] pps_core: LinuxPPS API ver. 1 registered
[ 0.190670] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.190676] PTP clock support registered
[ 0.190687] EDAC MC: Ver: 3.0.0
[ 0.190763] efivars: Registered efivars operations
[ 0.190763] NetLabel: Initializing
[ 0.190763] NetLabel: domain hash size = 128
[ 0.190763] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.190763] NetLabel: unlabeled traffic allowed by default
[ 0.190763] PCI: Using ACPI for IRQ routing
[ 0.191593] PCI: pci_cache_line_size set to 64 bytes
[ 0.191652] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff]
[ 0.191654] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff]
[ 0.191655] e820: reserve RAM buffer [mem 0xc4385018-0xc7ffffff]
[ 0.191656] e820: reserve RAM buffer [mem 0xc7d98000-0xc7ffffff]
[ 0.191658] e820: reserve RAM buffer [mem 0xcdce9000-0xcfffffff]
[ 0.191659] e820: reserve RAM buffer [mem 0xdadd0000-0xdbffffff]
[ 0.191660] e820: reserve RAM buffer [mem 0xdbb00000-0xdbffffff]
[ 0.191661] e820: reserve RAM buffer [mem 0x21f800000-0x21fffffff]
[ 0.191706] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[ 0.191706] pci 0000:00:02.0: vgaarb: bridge control possible
[ 0.191706] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[ 0.191706] vgaarb: loaded
[ 0.191706] clocksource: Switched to clocksource tsc-early
[ 0.191706] VFS: Disk quotas dquot_6.6.0
[ 0.191706] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.191706] AppArmor: AppArmor Filesystem Enabled
[ 0.191706] pnp: PnP ACPI init
[ 0.191706] system 00:00: [io 0x0680-0x069f] has been reserved
[ 0.191706] system 00:00: [io 0xffff] has been reserved
[ 0.191706] system 00:00: [io 0xffff] has been reserved
[ 0.191706] system 00:00: [io 0xffff] has been reserved
[ 0.191706] system 00:00: [io 0x1800-0x18fe] has been reserved
[ 0.191706] system 00:00: [io 0x164e-0x164f] has been reserved
[ 0.191706] system 00:02: [io 0x1854-0x1857] has been reserved
[ 0.191706] system 00:05: [mem 0xfed1c000-0xfed1ffff] has been reserved
[ 0.191706] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved
[ 0.191706] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved
[ 0.191706] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved
[ 0.191706] system 00:05: [mem 0xf8000000-0xfbffffff] has been reserved
[ 0.191706] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved
[ 0.191706] system 00:05: [mem 0xfed90000-0xfed93fff] could not be reserved
[ 0.191706] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved
[ 0.191706] system 00:05: [mem 0xff000000-0xffffffff] has been reserved
[ 0.191706] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved
[ 0.191706] system 00:05: [mem 0xf7fe0000-0xf7feffff] has been reserved
[ 0.191706] system 00:05: [mem 0xf7ff0000-0xf7ffffff] has been reserved
[ 0.191706] system 00:06: [mem 0xfe102000-0xfe102fff] has been reserved
[ 0.191706] system 00:06: [mem 0xfe104000-0xfe104fff] has been reserved
[ 0.191706] system 00:06: [mem 0xfe106000-0xfe106fff] has been reserved
[ 0.193294] pnp: PnP ACPI: found 7 devices
[ 0.198986] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 0.199055] NET: Registered PF_INET protocol family
[ 0.199171] IP idents hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[ 0.200882] tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear)
[ 0.200920] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.200973] TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear)
[ 0.201216] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[ 0.201521] TCP: Hash tables configured (established 65536 bind 65536)
[ 0.201603] MPTCP token hash table entries: 8192 (order: 5, 196608 bytes, linear)
[ 0.201639] UDP hash table entries: 4096 (order: 5, 131072 bytes, linear)
[ 0.201667] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, linear)
[ 0.201716] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.201724] NET: Registered PF_XDP protocol family
[ 0.201752] pci 0000:00:1c.0: PCI bridge to [bus 01]
[ 0.201760] pci 0000:00:1c.0: bridge window [mem 0xf7100000-0xf71fffff]
[ 0.201768] pci 0000:00:1c.3: PCI bridge to [bus 02]
[ 0.201773] pci 0000:00:1c.3: bridge window [mem 0xf7000000-0xf70fffff]
[ 0.201781] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 0.201784] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 0.201787] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 0.201790] pci_bus 0000:00: resource 7 [mem 0xdf800000-0xfeafffff window]
[ 0.201793] pci_bus 0000:01: resource 1 [mem 0xf7100000-0xf71fffff]
[ 0.201796] pci_bus 0000:02: resource 1 [mem 0xf7000000-0xf70fffff]
[ 0.225826] pci 0000:00:1d.0: quirk_usb_early_handoff+0x0/0x750 took 23158 usecs
[ 0.225866] PCI: CLS 64 bytes, default 64
[ 0.225877] DMAR: ACPI device "INTL9C60:00" under DMAR at fed91000 as 00:15.0
[ 0.225888] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.225890] software IO TLB: mapped [mem 0x00000000bc8e4000-0x00000000c08e4000] (64MB)
[ 0.225928] Unpacking initramfs...
[ 0.226264] Initialise system trusted keyrings
[ 0.226274] Key type blacklist registered
[ 0.226329] workingset: timestamp_bits=36 max_order=21 bucket_order=0
[ 0.226346] zbud: loaded
[ 0.226462] fuse: init (API version 7.39)
[ 0.226631] integrity: Platform Keyring initialized
[ 0.226639] integrity: Machine keyring initialized
[ 0.251260] Key type asymmetric registered
[ 0.251269] Asymmetric key parser 'x509' registered
[ 0.329862] Freeing initrd memory: 34496K
[ 0.334578] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[ 0.334615] io scheduler mq-deadline registered
[ 0.335599] pcieport 0000:00:1c.0: PME: Signaling with IRQ 42
[ 0.335778] pcieport 0000:00:1c.3: PME: Signaling with IRQ 43
[ 0.335850] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 0.337090] thermal LNXTHERM:00: registered as thermal_zone0
[ 0.337095] ACPI: thermal: Thermal Zone [THM] (25 C)
[ 0.340587] thermal LNXTHERM:01: registered as thermal_zone1
[ 0.340595] ACPI: thermal: Thermal Zone [TZ00] (61 C)
[ 0.343911] thermal LNXTHERM:02: registered as thermal_zone2
[ 0.343916] ACPI: thermal: Thermal Zone [TZ01] (61 C)
[ 0.344147] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.344797] hpet_acpi_add: no address or irqs in _CRS
[ 0.344819] Linux agpgart interface v0.103
[ 0.345147] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[ 0.345506] i8042: Warning: Keylock active
[ 0.347696] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.347703] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.347828] mousedev: PS/2 mouse device common for all mice
[ 0.347856] rtc_cmos 00:01: RTC can wake from S4
[ 0.348114] rtc_cmos 00:01: registered as rtc0
[ 0.348153] rtc_cmos 00:01: setting system clock to 2024-02-04T05:37:02 UTC (1707025022)
[ 0.348180] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram
[ 0.348279] intel_pstate: Intel P-state driver initializing
[ 0.348578] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.348845] efifb: probing for efifb
[ 0.348857] efifb: framebuffer at 0xe0000000, using 8100k, total 8100k
[ 0.348860] efifb: mode is 1920x1080x32, linelength=7680, pages=1
[ 0.348863] efifb: scrolling: redraw
[ 0.348865] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[ 0.349197] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[ 0.350588] Console: switching to colour frame buffer device 240x67
[ 0.352195] fb0: EFI VGA frame buffer device
[ 0.352363] NET: Registered PF_INET6 protocol family
[ 0.357119] Segment Routing with IPv6
[ 0.357143] In-situ OAM (IOAM) with IPv6
[ 0.357173] mip6: Mobile IPv6
[ 0.357184] NET: Registered PF_PACKET protocol family
[ 0.357277] mpls_gso: MPLS GSO support
[ 0.357534] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[ 0.357586] microcode: Current revision: 0x0000002f
[ 0.357596] microcode: Updated early from: 0x0000002b
[ 0.357664] IPI shorthand broadcast: enabled
[ 0.358781] sched_clock: Marking stable (356004978, 1729638)->(394299224, -36564608)
[ 0.358953] registered taskstats version 1
[ 0.358992] Loading compiled-in X.509 certificates
[ 0.378501] Loaded X.509 cert 'Build time autogenerated kernel key: 3b77e94d24cb77d7330e7294e7852aab041f1cec'
[ 0.380278] Key type .fscrypt registered
[ 0.380288] Key type fscrypt-provisioning registered
[ 0.395840] Key type encrypted registered
[ 0.395861] AppArmor: AppArmor sha256 policy hashing enabled
[ 0.396110] integrity: Loading X.509 certificate: UEFI:db
[ 0.396152] integrity: Loaded X.509 cert 'Microsoft Windows Production PCA 2011: a92902398e16c49778cd90f99e4f9ae17c55af53'
[ 0.396170] integrity: Loading X.509 certificate: UEFI:db
[ 0.396202] integrity: Loaded X.509 cert 'Microsoft Corporation UEFI CA 2011: 13adbf4309bd82709c8cd54f316ed522988a1bd4'
[ 0.396557] ima: No TPM chip found, activating TPM-bypass!
[ 0.396569] ima: Allocated hash algorithm: sha256
[ 0.396586] ima: No architecture policies found
[ 0.396608] evm: Initialising EVM extended attributes:
[ 0.396618] evm: security.selinux
[ 0.396625] evm: security.SMACK64 (disabled)
[ 0.396634] evm: security.SMACK64EXEC (disabled)
[ 0.396642] evm: security.SMACK64TRANSMUTE (disabled)
[ 0.396651] evm: security.SMACK64MMAP (disabled)
[ 0.396660] evm: security.apparmor
[ 0.396667] evm: security.ima
[ 0.396674] evm: security.capability
[ 0.396681] evm: HMAC attrs: 0x1
[ 0.523925] RAS: Correctable Errors collector initialized.
[ 0.523977] clk: Disabling unused clocks
[ 0.524959] Freeing unused decrypted memory: 2036K
[ 0.525559] Freeing unused kernel image (initmem) memory: 3968K
[ 0.545788] Write protecting the kernel read-only data: 20480k
[ 0.546571] Freeing unused kernel image (rodata/data gap) memory: 312K
[ 0.609536] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 0.609979] x86/mm: Checking user space page tables
[ 0.659703] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 0.660143] Run /init as init process
[ 0.660578] with arguments:
[ 0.660580] /init
[ 0.660581] with environment:
[ 0.660581] HOME=/
[ 0.660582] TERM=linux
[ 0.810283] wmi_bus wmi_bus-PNP0C14:00: WQBC data block query control method not found
[ 0.880237] ACPI: bus type drm_connector registered
[ 0.884134] SCSI subsystem initialized
[ 0.909861] libata version 3.00 loaded.
[ 0.915298] ahci 0000:00:1f.2: version 3.0
[ 0.915486] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[ 0.926040] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 6 Gbps 0x8 impl SATA mode
[ 0.926529] ahci 0000:00:1f.2: flags: 64bit ncq stag pm led clo only pio slum part deso sadm sds apst
[ 0.927443] scsi host0: ahci
[ 0.928228] scsi host1: ahci
[ 0.928949] scsi host2: ahci
[ 0.929667] scsi host3: ahci
[ 0.930302] ata1: DUMMY
[ 0.930875] ata2: DUMMY
[ 0.931319] ata3: DUMMY
[ 0.931757] ata4: SATA max UDMA/133 abar m2048@0xf7222000 port 0xf7222280 irq 44 lpm-pol 3
[ 1.244233] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 1.247531] ata4.00: ATA-9: LITEON L8H-256V2G-11 M.2 2280 256GB, F88110A, max UDMA/133
[ 1.248019] ata4.00: 500118192 sectors, multi 2: LBA48 NCQ (depth 32), AA
[ 1.248848] ata4.00: Features: Dev-Sleep
[ 1.249800] ata4.00: configured for UDMA/133
[ 1.250439] scsi 3:0:0:0: Direct-Access ATA LITEON L8H-256V2 10A PQ: 0 ANSI: 5
[ 1.454644] tsc: Refined TSC clocksource calibration: 2194.919 MHz
[ 1.455458] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa372fc492, max_idle_ns: 440795285018 ns
[ 1.456319] clocksource: Switched to clocksource tsc
[ 1.465896] Console: switching to colour dummy device 80x25
[ 1.465946] i915 0000:00:02.0: vgaarb: deactivate vga console
[ 1.466058] [drm] ACPI BIOS requests an excessive sleep of 25000 ms, using 1500 ms instead
[ 1.467178] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 1.483741] sd 3:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
[ 1.483778] sd 3:0:0:0: [sda] Write Protect is off
[ 1.483785] sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 1.483815] sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1.483836] sd 3:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[ 1.491448] sda: sda1 sda2 sda3 sda4 sda5 sda6 sda7 sda8
[ 1.491729] sd 3:0:0:0: [sda] Attached SCSI disk
[ 1.775815] psmouse serio1: synaptics: queried max coordinates: x [..5666], y [..4734]
[ 1.802497] psmouse serio1: synaptics: queried min coordinates: x [1276..], y [1118..]
[ 1.802506] psmouse serio1: synaptics: The touchpad can support a better bus than the too old PS/2 protocol. Make sure MOUSE_PS2_SYNAPTICS_SMBUS and RMI4_SMB are enabled to get a better touchpad experience.
[ 1.855404] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xd00123/0x840300/0x12e800/0x0, board id: 3038, fw id: 1832324
[ 1.888522] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input2
[ 1.929621] [drm] Initialized i915 1.6.0 20230929 for 0000:00:02.0 on minor 0
[ 1.932744] ACPI: video: Video Device [GFX0] (multi-head: yes rom: no post: no)
[ 1.934356] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input3
[ 1.934554] i915 display info: display version: 8
[ 1.934557] i915 display info: cursor_needs_physical: no
[ 1.934559] i915 display info: has_cdclk_crawl: no
[ 1.934561] i915 display info: has_cdclk_squash: no
[ 1.934563] i915 display info: has_ddi: yes
[ 1.934564] i915 display info: has_dp_mst: yes
[ 1.934566] i915 display info: has_dsb: no
[ 1.934567] i915 display info: has_fpga_dbg: yes
[ 1.934569] i915 display info: has_gmch: no
[ 1.934570] i915 display info: has_hotplug: yes
[ 1.934572] i915 display info: has_hti: no
[ 1.934573] i915 display info: has_ipc: no
[ 1.934574] i915 display info: has_overlay: no
[ 1.934576] i915 display info: has_psr: yes
[ 1.934577] i915 display info: has_psr_hw_tracking: yes
[ 1.934579] i915 display info: overlay_needs_physical: no
[ 1.934580] i915 display info: supports_tv: no
[ 1.934582] i915 display info: has_hdcp: no
[ 1.934583] i915 display info: has_dmc: no
[ 1.934585] i915 display info: has_dsc: no
[ 1.937373] fbcon: i915drmfb (fb0) is primary device
[ 3.047804] Console: switching to colour frame buffer device 240x67
[ 3.069229] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[ 3.320262] PM: Image not found (code -22)
[ 3.417714] EXT4-fs (sda6): mounted filesystem f88efbd2-19f5-4f2f-a8ce-6c1e1255119b ro with ordered data mode. Quota mode: none.
[ 3.460478] Not activating Mandatory Access Control as /sbin/tomoyo-init does not exist.
[ 3.579670] systemd[1]: Inserted module 'autofs4'
[ 3.611789] systemd[1]: systemd 255.3-1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[ 3.612812] systemd[1]: Detected architecture x86-64.
[ 3.616486] systemd[1]: Hostname set to <zx>.
[ 3.898134] systemd[1]: Queued start job for default target graphical.target.
[ 3.923038] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[ 3.924088] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[ 3.925330] systemd[1]: Created slice system-postfix.slice - Slice /system/postfix.
[ 3.927144] systemd[1]: Created slice system-systemd\x2dfsck.slice - Slice /system/systemd-fsck.
[ 3.928444] systemd[1]: Created slice user.slice - User and Session Slice.
[ 3.929437] systemd[1]: systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch was skipped because of an unmet condition check (ConditionPathExists=!/run/plymouth/pid).
[ 3.929516] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
[ 3.931045] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
[ 3.932154] systemd[1]: Expecting device dev-disk-by\x2duuid-5A2C\x2d588C.device - /dev/disk/by-uuid/5A2C-588C...
[ 3.933497] systemd[1]: Expecting device dev-disk-by\x2duuid-ebb97d51\x2d9fa7\x2d4bc0\x2db802\x2d4f5c51cdf061.device - /dev/disk/by-uuid/ebb97d51-9fa7-4bc0-b802-4f5c51cdf061...
[ 3.934274] systemd[1]: Expecting device dev-disk-by\x2duuid-ec560b1b\x2ddcef\x2d4510\x2db87f\x2d6ff7e7efa8ed.device - /dev/disk/by-uuid/ec560b1b-dcef-4510-b87f-6ff7e7efa8ed...
[ 3.935786] systemd[1]: Reached target cryptsetup.target - Local Encrypted Volumes.
[ 3.937361] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.
[ 3.938169] systemd[1]: Reached target nss-user-lookup.target - User and Group Name Lookups.
[ 3.939563] systemd[1]: Reached target paths.target - Path Units.
[ 3.940312] systemd[1]: Reached target slices.target - Slice Units.
[ 3.941738] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.
[ 3.947038] systemd[1]: Listening on rpcbind.socket - RPCbind Server Activation Socket.
[ 3.948080] systemd[1]: Listening on syslog.socket - Syslog Socket.
[ 3.950311] systemd[1]: Listening on systemd-fsckd.socket - fsck to fsckd communication Socket.
[ 3.951816] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
[ 3.953473] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
[ 3.955172] systemd[1]: Listening on systemd-journald.socket - Journal Socket.
[ 3.956701] systemd[1]: systemd-pcrextend.socket - TPM2 PCR Extension (Varlink) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[ 3.957060] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
[ 3.959409] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
[ 3.962358] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[ 3.965224] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
[ 3.970093] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
[ 3.977277] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
[ 3.984708] systemd[1]: Starting keyboard-setup.service - Set the console keyboard layout...
[ 3.989349] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
[ 3.992844] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
[ 3.996419] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
[ 4.002056] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
[ 4.008689] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
[ 4.020713] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
[ 4.023423] pstore: Using crash dump compression: deflate
[ 4.027310] pstore: Registered efi_pstore as persistent store backend
[ 4.028347] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...
[ 4.035041] systemd[1]: systemd-fsck-root.service - File System Check on Root Device was skipped because of an unmet condition check (ConditionPathExists=!/run/initramfs/fsck-root).
[ 4.041202] systemd[1]: Starting systemd-journald.service - Journal Service...
[ 4.049646] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
[ 4.049723] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[ 4.049787] device-mapper: uevent: version 1.0.3
[ 4.049927] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@redhat.com
[ 4.051388] loop: module loaded
[ 4.056912] systemd[1]: systemd-pcrmachine.service - TPM2 PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[ 4.058502] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
[ 4.060547] systemd[1]: systemd-tpm2-setup-early.service - TPM2 SRK Setup (Early) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[ 4.070055] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
[ 4.075603] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[ 4.080860] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
[ 4.084250] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
[ 4.087906] lp: driver loaded but no devices found
[ 4.093462] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
[ 4.095558] ppdev: user-space parallel port driver
[ 4.096303] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.
[ 4.096975] systemd-journald[326]: Collecting audit messages is disabled.
[ 4.103167] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[ 4.103405] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
[ 4.111170] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
[ 4.111402] systemd[1]: Finished modprobe@dm_mod.service - Load Kernel Module dm_mod.
[ 4.113763] EXT4-fs (sda6): re-mounted f88efbd2-19f5-4f2f-a8ce-6c1e1255119b r/w. Quota mode: none.
[ 4.123520] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 4.123751] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
[ 4.128234] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[ 4.128452] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[ 4.138259] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[ 4.138484] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
[ 4.143875] systemd[1]: modprobe@loop.service: Deactivated successfully.
[ 4.145582] systemd[1]: Finished modprobe@loop.service - Load Kernel Module loop.
[ 4.150130] systemd[1]: Started systemd-journald.service - Journal Service.
[ 4.241153] systemd-journald[326]: Received client request to flush runtime journal.
[ 4.262130] systemd-journald[326]: /var/log/journal/ea69907a8a964ca4a69c2618bc01f315/system.journal: Journal file uses a different sequence number ID, rotating.
[ 4.262138] systemd-journald[326]: Rotating system journal.
[ 4.567962] sd 3:0:0:0: Attached scsi generic sg0 type 0
[ 4.591757] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input4
[ 4.593703] ACPI: AC: AC Adapter [AC] (on-line)
[ 4.598526] ACPI Warning: \_SB.IETM._ART: Return Package type mismatch at index 0 - found Integer, expected Reference (20230628/nspredef-260)
[ 4.599810] _ART package 0 is invalid, ignored
[ 4.600690] Consider using thermal netlink events interface
[ 4.612398] hid: raw HID events driver (C) Jiri Kosina
[ 4.621031] ACPI: button: Lid Switch [LID0]
[ 4.629127] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input5
[ 4.645829] ACPI: button: Power Button [PBTN]
[ 4.646013] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[ 4.653860] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input6
[ 4.666068] ACPI: button: Sleep Button [SBTN]
[ 4.671575] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input7
[ 4.680108] ACPI: button: Power Button [PWRF]
[ 4.765366] intel_pch_thermal 0000:00:1f.6: enabling device (0000 -> 0002)
[ 4.770325] ACPI: battery: Slot [BAT0] (battery present)
[ 4.795729] rtsx_pci 0000:01:00.0: enabling device (0000 -> 0002)
[ 4.811113] ACPI: bus type USB registered
[ 4.811171] usbcore: registered new interface driver usbfs
[ 4.811187] usbcore: registered new interface driver hub
[ 4.811212] usbcore: registered new device driver usb
[ 4.817715] input: PC Speaker as /devices/platform/pcspkr/input/input8
[ 4.828463] Adding 8388604k swap on /dev/sda8. Priority:-2 extents:1 across:8388604k SS
[ 4.850427] EXT4-fs (sda7): mounted filesystem ec560b1b-dcef-4510-b87f-6ff7e7efa8ed r/w with ordered data mode. Quota mode: none.
[ 4.861121] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.4)
[ 5.033551] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 5.035286] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 5.036929] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[ 5.038619] i801_smbus 0000:00:1f.3: SPD Write Disable is set
[ 5.038653] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
[ 5.042326] cfg80211: loaded regulatory.db is malformed or signature is missing/invalid
[ 5.071482] i2c i2c-8: 2/2 memory slots populated (from DMI)
[ 5.089259] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 5.092888] proc_thermal 0000:00:04.0: enabling device (0000 -> 0002)
[ 5.106323] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[ 5.115679] input: Dell WMI hotkeys as /devices/platform/PNP0C14:00/wmi_bus/wmi_bus-PNP0C14:00/9DBB5994-A997-11DA-B012-B622A1EF5492/input/input9
[ 5.133002] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x000000000004b810
[ 5.153269] ehci-pci 0000:00:1d.0: EHCI Host Controller
[ 5.153279] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[ 5.153293] ehci-pci 0000:00:1d.0: debug port 2
[ 5.153309] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 5.153313] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 3
[ 5.153318] xhci_hcd 0000:00:14.0: Host supports USB 3.0 SuperSpeed
[ 5.153394] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.08
[ 5.153398] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.153400] usb usb1: Product: xHCI Host Controller
[ 5.153401] usb usb1: Manufacturer: Linux 6.8.0-rc2-xps13-9343_2 xhci-hcd
[ 5.153403] usb usb1: SerialNumber: 0000:00:14.0
[ 5.155291] hub 1-0:1.0: USB hub found
[ 5.155308] hub 1-0:1.0: 11 ports detected
[ 5.157223] ehci-pci 0000:00:1d.0: irq 21, io mem 0xf7223000
[ 5.170890] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[ 5.192804] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.08
[ 5.192809] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.192812] usb usb3: Product: xHCI Host Controller
[ 5.192814] usb usb3: Manufacturer: Linux 6.8.0-rc2-xps13-9343_2 xhci-hcd
[ 5.192815] usb usb3: SerialNumber: 0000:00:14.0
[ 5.193829] Intel(R) Wireless WiFi driver for Linux
[ 5.199022] hub 3-0:1.0: USB hub found
[ 5.203593] hub 3-0:1.0: 4 ports detected
[ 5.210631] iwlwifi 0000:02:00.0: enabling device (0000 -> 0002)
[ 5.212853] iwlwifi 0000:02:00.0: Detected crf-id 0x2816, cnv-id 0x1000200 wfpm id 0x80000000
[ 5.212871] iwlwifi 0000:02:00.0: PCI dev 2526/0010, rev=0x321, rfid=0x105110
[ 5.216352] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.08
[ 5.217438] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.217441] usb usb2: Product: EHCI Host Controller
[ 5.217442] usb usb2: Manufacturer: Linux 6.8.0-rc2-xps13-9343_2 ehci_hcd
[ 5.217444] usb usb2: SerialNumber: 0000:00:1d.0
[ 5.217608] hub 2-0:1.0: USB hub found
[ 5.217618] hub 2-0:1.0: 2 ports detected
[ 5.224048] iTCO_vendor_support: vendor-support=0
[ 5.239102] RAPL PMU: API unit is 2^-32 Joules, 4 fixed counters, 655360 ms ovfl timer
[ 5.239106] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[ 5.239108] RAPL PMU: hw unit of domain package 2^-14 Joules
[ 5.239109] RAPL PMU: hw unit of domain dram 2^-14 Joules
[ 5.239110] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[ 5.239536] iwlwifi 0000:02:00.0: loaded firmware version 46.ff18e32a.0 9260-th-b0-jf-b0-46.ucode op_mode iwlmvm
[ 5.240550] input: DLL0665:01 06CB:76AD Mouse as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL0665:01/0018:06CB:76AD.0001/input/input10
[ 5.242811] iTCO_wdt iTCO_wdt.1.auto: Found a Wildcat Point_LP TCO device (Version=2, TCOBASE=0x1860)
[ 5.256564] intel_rapl_common: Found RAPL domain package
[ 5.256568] intel_rapl_common: Found RAPL domain core
[ 5.256569] intel_rapl_common: Found RAPL domain uncore
[ 5.256574] intel_rapl_common: Found RAPL domain dram
[ 5.256581] intel_rapl_common: package-0:package:long_term locked by BIOS
[ 5.256584] intel_rapl_common: package-0:package:short_term locked by BIOS
[ 5.264308] iTCO_wdt iTCO_wdt.1.auto: initialized. heartbeat=30 sec (nowayout=0)
[ 5.265979] input: DLL0665:01 06CB:76AD Touchpad as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL0665:01/0018:06CB:76AD.0001/input/input11
[ 5.285225] cryptd: max_cpu_qlen set to 1000
[ 5.304523] hid-generic 0018:06CB:76AD.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL0665:01 06CB:76AD] on i2c-DLL0665:01
[ 5.434310] AVX2 version of gcm_enc/dec engaged.
[ 5.434352] AES CTR mode by8 optimization enabled
[ 5.434808] snd_hda_intel 0000:00:03.0: enabling device (0000 -> 0002)
[ 5.435003] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 5.437346] snd_hda_intel 0000:00:1b.0: enabling device (0000 -> 0002)
[ 5.450090] usb 1-3: new full-speed USB device number 2 using xhci_hcd
[ 5.459715] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input13
[ 5.485768] usb 2-1: new high-speed USB device number 2 using ehci-pci
[ 5.505359] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC3263: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[ 5.505366] snd_hda_codec_realtek hdaudioC1D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 5.505369] snd_hda_codec_realtek hdaudioC1D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[ 5.505372] snd_hda_codec_realtek hdaudioC1D0: mono: mono_out=0x0
[ 5.505373] snd_hda_codec_realtek hdaudioC1D0: inputs:
[ 5.505376] snd_hda_codec_realtek hdaudioC1D0: Headset Mic=0x18
[ 5.505378] snd_hda_codec_realtek hdaudioC1D0: Headphone Mic=0x1a
[ 5.505380] snd_hda_codec_realtek hdaudioC1D0: Internal Mic=0x12
[ 5.514464] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input14
[ 5.514545] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input15
[ 5.558621] iwlwifi 0000:02:00.0: Detected Intel(R) Wireless-AC 9260 160MHz, REV=0x321
[ 5.558808] thermal thermal_zone11: failed to read out thermal zone (-61)
[ 5.590769] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/sound/card1/input16
[ 5.591853] input: HDA Intel PCH Headphone Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input17
[ 5.598961] usb 1-3: New USB device found, idVendor=8087, idProduct=0025, bcdDevice= 0.02
[ 5.598968] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.611365] input: DLL0665:01 06CB:76AD Mouse as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL0665:01/0018:06CB:76AD.0001/input/input18
[ 5.611419] iwlwifi 0000:02:00.0: base HW address: 64:6e:e0:e7:81:4b, OTP minor version: 0x4
[ 5.649875] input: DLL0665:01 06CB:76AD Touchpad as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL0665:01/0018:06CB:76AD.0001/input/input19
[ 5.651158] usb 2-1: New USB device found, idVendor=8087, idProduct=8001, bcdDevice= 0.03
[ 5.652267] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.653710] hid-multitouch 0018:06CB:76AD.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL0665:01 06CB:76AD] on i2c-DLL0665:01
[ 5.655055] hub 2-1:1.0: USB hub found
[ 5.656403] hub 2-1:1.0: 8 ports detected
[ 5.677849] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 5.677974] iwlwifi 0000:02:00.0: WBRF is not supported
[ 5.699107] iwlwifi 0000:02:00.0 wlp2s0: renamed from wlan0
[ 5.753755] usb 1-5: new high-speed USB device number 3 using xhci_hcd
[ 5.948826] usb 1-5: New USB device found, idVendor=0bda, idProduct=5682, bcdDevice=48.14
[ 5.948832] usb 1-5: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[ 5.948835] usb 1-5: Product: Integrated_Webcam_HD
[ 5.948837] usb 1-5: Manufacturer: CKFEH41F301030020790
[ 5.948838] usb 1-5: SerialNumber: 200901010001
[ 6.604203] iwlwifi 0000:02:00.0: Registered PHC clock: iwlwifi-PTP, with index: 0
[ 7.168042] mc: Linux media interface: v0.10
[ 7.213636] videodev: Linux video capture interface: v2.00
[ 7.255254] usb 1-5: Found UVC 1.00 device Integrated_Webcam_HD (0bda:5682)
[ 7.283794] usbcore: registered new interface driver uvcvideo
[ 7.313687] Bluetooth: Core ver 2.22
[ 7.314337] NET: Registered PF_BLUETOOTH protocol family
[ 7.315231] Bluetooth: HCI device and connection manager initialized
[ 7.315823] Bluetooth: HCI socket layer initialized
[ 7.316396] Bluetooth: L2CAP socket layer initialized
[ 7.316980] Bluetooth: SCO socket layer initialized
[ 7.340570] usbcore: registered new interface driver btusb
[ 7.353685] Bluetooth: hci0: Found device firmware: intel/ibt-18-16-1.sfi
[ 7.354805] Bluetooth: hci0: Boot Address: 0x40800
[ 7.355794] Bluetooth: hci0: Firmware Version: 155-35.23
[ 7.356778] Bluetooth: hci0: Firmware already loaded
[ 7.359935] Bluetooth: hci0: HCI LE Coded PHY feature bit is set, but its usage is not supported.
[ 7.433652] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 7.434251] Bluetooth: BNEP filters: protocol multicast
[ 7.434815] Bluetooth: BNEP socket layer initialized
[ 7.439392] Bluetooth: MGMT ver 1.22
[ 7.447718] NET: Registered PF_ALG protocol family
[ 8.327861] Bluetooth: RFCOMM TTY layer initialized
[ 8.327873] Bluetooth: RFCOMM socket layer initialized
[ 8.327880] Bluetooth: RFCOMM ver 1.11
[ 10.136289] rfkill: input handler disabled
[ 10.452503] wlp2s0: 80 MHz not supported, disabling VHT
[ 10.457335] wlp2s0: authenticate with 44:ce:7d:49:33:dc (local address=64:6e:e0:e7:81:4b)
[ 10.458499] wlp2s0: send auth to 44:ce:7d:49:33:dc (try 1/3)
[ 10.497646] wlp2s0: authenticated
[ 10.501824] wlp2s0: associate with 44:ce:7d:49:33:dc (try 1/3)
[ 10.505464] wlp2s0: RX AssocResp from 44:ce:7d:49:33:dc (capab=0x411 status=0 aid=5)
[ 10.508817] wlp2s0: associated
[ 10.578865] iwlwifi 0000:02:00.0: Unhandled alg: 0xc0400707
[ 16.561605] systemd-journald[326]: /var/log/journal/ea69907a8a964ca4a69c2618bc01f315/user-1000.journal: Journal file uses a different sequence number ID, rotating.
[ 17.038414] rfkill: input handler enabled
[ 19.304591] warning: `gnome-shell' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211
[ 20.355648] rfkill: input handler disabled
[ 415.715455] wlp2s0: deauthenticating from 44:ce:7d:49:33:dc by local choice (Reason: 3=DEAUTH_LEAVING)
[ 420.782178] PM: suspend entry (deep)
[ 420.793666] Filesystems sync: 0.011 seconds
[ 420.803483] Freezing user space processes
[ 420.805134] Freezing user space processes completed (elapsed 0.001 seconds)
[ 420.805140] OOM killer disabled.
[ 420.805141] Freezing remaining freezable tasks
[ 420.806325] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[ 420.806359] printk: Suspending console(s) (use no_console_suspend to debug)
[ 420.829074] sd 3:0:0:0: [sda] Synchronizing SCSI cache
[ 420.829170] ata4.00: Entering standby power mode
[ 421.009166] psmouse serio1: Failed to disable mouse on isa0060/serio1
[ 421.659885] ACPI: EC: interrupt blocked
[ 421.733089] ACPI: PM: Preparing to enter system sleep state S3
[ 421.735353] ACPI: EC: event blocked
[ 421.735354] ACPI: EC: EC stopped
[ 421.735354] ACPI: PM: Saving platform NVS memory
[ 421.735450] Disabling non-boot CPUs ...
[ 421.736771] smpboot: CPU 1 is now offline
[ 421.738403] smpboot: CPU 2 is now offline
[ 421.740367] smpboot: CPU 3 is now offline
[ 421.743756] ACPI: PM: Low-level resume complete
[ 421.743782] ACPI: EC: EC started
[ 421.743782] ACPI: PM: Restoring platform NVS memory
[ 421.744162] Enabling non-boot CPUs ...
[ 421.744213] smpboot: Booting Node 0 Processor 1 APIC 0x2
[ 421.747823] CPU1 is up
[ 421.747849] smpboot: Booting Node 0 Processor 2 APIC 0x1
[ 421.748572] CPU2 is up
[ 421.748589] smpboot: Booting Node 0 Processor 3 APIC 0x3
[ 421.749316] CPU3 is up
[ 421.751037] ACPI: PM: Waking up from system sleep state S3
[ 421.790860] ACPI: EC: interrupt unblocked
[ 421.856498] ACPI: EC: event unblocked
[ 422.076263] atkbd serio0: Failed to deactivate keyboard on isa0060/serio0
[ 422.124571] usb 1-5: reset high-speed USB device number 3 using xhci_hcd
[ 422.171678] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 422.175721] ata4.00: configured for UDMA/133
[ 422.236695] atkbd serio0: Spurious ACK on isa0060/serio0. Some program might be trying to access hardware directly.
[ 422.400562] usb 1-3: reset full-speed USB device number 2 using xhci_hcd
[ 422.550240] OOM killer enabled.
[ 422.550244] Restarting tasks ...
[ 422.550364] pci_bus 0000:01: Allocating resources
[ 422.550378] pcieport 0000:00:1c.0: bridge window [io 0x1000-0x0fff] to [bus 01] add_size 1000
[ 422.550385] pcieport 0000:00:1c.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 01] add_size 200000 add_align 100000
[ 422.550395] pci_bus 0000:02: Allocating resources
[ 422.550410] pcieport 0000:00:1c.3: bridge window [io 0x1000-0x0fff] to [bus 02] add_size 1000
[ 422.550415] pcieport 0000:00:1c.3: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 02] add_size 200000 add_align 100000
[ 422.550426] pcieport 0000:00:1c.0: bridge window [mem 0xdf800000-0xdf9fffff 64bit pref]: assigned
[ 422.550431] pcieport 0000:00:1c.3: bridge window [mem 0xdfa00000-0xdfbfffff 64bit pref]: assigned
[ 422.550436] pcieport 0000:00:1c.0: bridge window [io 0x2000-0x2fff]: assigned
[ 422.550441] pcieport 0000:00:1c.3: bridge window [io 0x3000-0x3fff]: assigned
[ 422.551001] pci_bus 0000:01: Allocating resources
[ 422.551015] pci_bus 0000:02: Allocating resources
[ 422.552109] pci_bus 0000:01: Allocating resources
[ 422.552132] pci_bus 0000:02: Allocating resources
[ 422.559339] done.
[ 422.559355] random: crng reseeded on system resumption
[ 422.618255] PM: suspend exit
[ 422.620186] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[ 422.621042] Bluetooth: hci0: Device revision is 2
[ 422.621049] Bluetooth: hci0: Secure boot is enabled
[ 422.621052] Bluetooth: hci0: OTP lock is enabled
[ 422.621054] Bluetooth: hci0: API lock is enabled
[ 422.621056] Bluetooth: hci0: Debug lock is disabled
[ 422.621058] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[ 422.626545] Bluetooth: hci0: Found device firmware: intel/ibt-18-16-1.sfi
[ 422.626648] Bluetooth: hci0: Boot Address: 0x40800
[ 422.626652] Bluetooth: hci0: Firmware Version: 155-35.23
[ 424.048237] Bluetooth: hci0: Waiting for firmware download to complete
[ 424.049036] Bluetooth: hci0: Firmware loaded in 1389156 usecs
[ 424.049065] Bluetooth: hci0: Waiting for device to boot
[ 424.063084] Bluetooth: hci0: Device booted in 13712 usecs
[ 424.069114] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-18-16-1.ddc
[ 424.071132] Bluetooth: hci0: Applying Intel DDC parameters completed
[ 424.072110] Bluetooth: hci0: Firmware revision 0.1 build 155 week 35 2023
[ 424.074205] Bluetooth: hci0: HCI LE Coded PHY feature bit is set, but its usage is not supported.
[ 424.130620] Bluetooth: MGMT ver 1.22
[ 427.132151] wlp2s0: 80 MHz not supported, disabling VHT
[ 427.137986] wlp2s0: authenticate with 44:ce:7d:49:33:dc (local address=64:6e:e0:e7:81:4b)
[ 427.139126] wlp2s0: send auth to 44:ce:7d:49:33:dc (try 1/3)
[ 427.178450] wlp2s0: authenticated
[ 427.184240] wlp2s0: associate with 44:ce:7d:49:33:dc (try 1/3)
[ 427.189736] wlp2s0: RX AssocResp from 44:ce:7d:49:33:dc (capab=0x411 status=0 aid=5)
[ 427.193783] wlp2s0: associated
[ 427.260392] iwlwifi 0000:02:00.0: Unhandled alg: 0xc0400707
[ 7041.960263] wlp2s0: deauthenticating from 44:ce:7d:49:33:dc by local choice (Reason: 3=DEAUTH_LEAVING)
[ 7047.033778] PM: suspend entry (deep)
[ 7047.044806] Filesystems sync: 0.011 seconds
[ 7047.168766] Freezing user space processes
[ 7047.177663] Freezing user space processes completed (elapsed 0.008 seconds)
[ 7047.177671] OOM killer disabled.
[ 7047.177672] Freezing remaining freezable tasks
[ 7047.178662] Freezing remaining freezable tasks completed (elapsed 0.000 seconds)
[ 7047.178693] printk: Suspending console(s) (use no_console_suspend to debug)
[ 7047.202616] sd 3:0:0:0: [sda] Synchronizing SCSI cache
[ 7047.202805] ata4.00: Entering standby power mode
[ 7047.282907] ACPI: EC: interrupt blocked
[ 7047.306622] ACPI: PM: Preparing to enter system sleep state S3
[ 7047.312162] ACPI: EC: event blocked
[ 7047.312163] ACPI: EC: EC stopped
[ 7047.312163] ACPI: PM: Saving platform NVS memory
[ 7047.312267] Disabling non-boot CPUs ...
[ 7047.313848] smpboot: CPU 1 is now offline
[ 7047.315836] smpboot: CPU 2 is now offline
[ 7047.317733] smpboot: CPU 3 is now offline
[ 7047.321859] ACPI: PM: Low-level resume complete
[ 7047.321886] ACPI: EC: EC started
[ 7047.321887] ACPI: PM: Restoring platform NVS memory
[ 7047.322290] Enabling non-boot CPUs ...
[ 7047.322325] smpboot: Booting Node 0 Processor 1 APIC 0x2
[ 7047.325941] CPU1 is up
[ 7047.325970] smpboot: Booting Node 0 Processor 2 APIC 0x1
[ 7047.326685] CPU2 is up
[ 7047.326703] smpboot: Booting Node 0 Processor 3 APIC 0x3
[ 7047.327337] CPU3 is up
[ 7047.329060] ACPI: PM: Waking up from system sleep state S3
[ 7047.882216] ACPI: EC: interrupt unblocked
[ 7047.950181] ACPI: EC: event unblocked
[ 7048.218114] usb 1-3: reset full-speed USB device number 2 using xhci_hcd
[ 7048.281322] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 7048.285233] ata4.00: configured for UDMA/133
[ 7048.498064] usb 1-5: reset high-speed USB device number 3 using xhci_hcd
[ 7048.685662] OOM killer enabled.
[ 7048.685671] Restarting tasks ...
[ 7048.686048] pci_bus 0000:01: Allocating resources
[ 7048.686090] pci_bus 0000:02: Allocating resources
[ 7048.686368] pci_bus 0000:01: Allocating resources
[ 7048.686383] pci_bus 0000:02: Allocating resources
[ 7048.686951] pci_bus 0000:01: Allocating resources
[ 7048.686966] pci_bus 0000:02: Allocating resources
[ 7048.690338] done.
[ 7048.690353] random: crng reseeded on system resumption
[ 7048.735609] PM: suspend exit
[ 7049.107552] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[ 7049.108550] Bluetooth: hci0: Device revision is 2
[ 7049.108554] Bluetooth: hci0: Secure boot is enabled
[ 7049.108556] Bluetooth: hci0: OTP lock is enabled
[ 7049.108558] Bluetooth: hci0: API lock is enabled
[ 7049.108560] Bluetooth: hci0: Debug lock is disabled
[ 7049.108562] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[ 7049.156709] Bluetooth: hci0: Found device firmware: intel/ibt-18-16-1.sfi
[ 7049.156804] Bluetooth: hci0: Boot Address: 0x40800
[ 7049.156808] Bluetooth: hci0: Firmware Version: 155-35.23
[ 7050.554250] Bluetooth: hci0: Waiting for firmware download to complete
[ 7050.554565] Bluetooth: hci0: Firmware loaded in 1365084 usecs
[ 7050.554611] Bluetooth: hci0: Waiting for device to boot
[ 7050.568643] Bluetooth: hci0: Device booted in 13718 usecs
[ 7050.568672] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-18-16-1.ddc
[ 7050.570658] Bluetooth: hci0: Applying Intel DDC parameters completed
[ 7050.571625] Bluetooth: hci0: Firmware revision 0.1 build 155 week 35 2023
[ 7050.573595] Bluetooth: hci0: HCI LE Coded PHY feature bit is set, but its usage is not supported.
[ 7050.628912] Bluetooth: MGMT ver 1.22
[ 7053.492804] wlp2s0: 80 MHz not supported, disabling VHT
[ 7053.498657] wlp2s0: authenticate with 44:ce:7d:49:33:dc (local address=64:6e:e0:e7:81:4b)
[ 7053.499779] wlp2s0: send auth to 44:ce:7d:49:33:dc (try 1/3)
[ 7053.539104] wlp2s0: authenticated
[ 7053.541813] wlp2s0: associate with 44:ce:7d:49:33:dc (try 1/3)
[ 7053.545542] wlp2s0: RX AssocResp from 44:ce:7d:49:33:dc (capab=0x411 status=0 aid=7)
[ 7053.562606] wlp2s0: associated
[ 7053.623477] iwlwifi 0000:02:00.0: Unhandled alg: 0xc0400707
^ permalink raw reply
* Re: [PATCH] iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP
From: Jonathan Cameron @ 2024-02-04 14:03 UTC (permalink / raw)
To: Srinivas Pandruvada
Cc: jikos, lars, Basavaraj.Natikar, linux-input, linux-iio,
linux-kernel
In-Reply-To: <20240204125617.2635574-1-srinivas.pandruvada@linux.intel.com>
On Sun, 4 Feb 2024 04:56:17 -0800
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> wrote:
> When als_capture_sample() is called with usage ID
> HID_USAGE_SENSOR_TIME_TIMESTAMP, return 0. The HID sensor core ignores
> the return value for capture_sample() callback, so return value doesn't
> make difference. But correct the return value to return success instead
> of -EINVAL.
>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Applied and marked for stable.
Whilst this is the minimal fix (and so the right one!) it would be good
to change this as a follow up to just use direct returns as then this
sort of bug won't get reintroduced and the code will be a bit simpler.
Jonathan
> ---
> As part of review comments for series "Add support of color temperature
> and chromaticity". This is separate from the series as this is
> unrelated.
>
> drivers/iio/light/hid-sensor-als.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
> index 5cd27f04b45e..b6c4bef2a7bb 100644
> --- a/drivers/iio/light/hid-sensor-als.c
> +++ b/drivers/iio/light/hid-sensor-als.c
> @@ -226,6 +226,7 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
> case HID_USAGE_SENSOR_TIME_TIMESTAMP:
> als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes,
> *(s64 *)raw_data);
> + ret = 0;
> break;
> default:
> break;
^ permalink raw reply
* Re: [PATCH v4 1/4] iio: hid-sensor-als: Assign channels dynamically
From: Jonathan Cameron @ 2024-02-04 15:58 UTC (permalink / raw)
To: Srinivas Pandruvada
Cc: jikos, lars, Basavaraj.Natikar, linux-input, linux-iio,
linux-kernel
In-Reply-To: <20240204130332.2635760-2-srinivas.pandruvada@linux.intel.com>
On Sun, 4 Feb 2024 05:03:29 -0800
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> wrote:
> Instead of assuming that every channel defined statically by
> als_channels[] is present, assign dynamically based on presence of the
> respective usage id in the descriptor. This will allow to register ALS
> with limited channel support. Append the timestamp as the last channel.
>
> Update available_scan_mask to specify all channels which are present.
>
> There is no intentional function changes done.
>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Hi Srinivas,
Logic looks fine, but not that global variable...
> ---
> v4:
> Addressed comments from Jonthan:
> - Use available_scan_masks
> - timestamp location is fixed and left gaps in sample data for absent channels
> - Use CHANNEL_SCAN_INDEX_MAX as limit to check presence of usage ids, otherwise
> it will miss newer channels added in subsequent patches.
> v3:
> Addressed comments from Jonthan:
> - Remove channel allocation and move to iio_priv()
> - Parse all usage IDs in a single loop and continue
> for failure. This way the temperature and chromaticity
> will not need any special processing to parse usage ids.
> - Don't leave empty channel indexes
>
> v2:
> New change
>
> drivers/iio/light/hid-sensor-als.c | 52 +++++++++++++++++++++---------
> 1 file changed, 36 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
> index b6c4bef2a7bb..d3b892c0e307 100644
> --- a/drivers/iio/light/hid-sensor-als.c
> +++ b/drivers/iio/light/hid-sensor-als.c
> @@ -25,6 +25,7 @@ struct als_state {
> struct hid_sensor_hub_callbacks callbacks;
> struct hid_sensor_common common_attributes;
> struct hid_sensor_hub_attribute_info als[CHANNEL_SCAN_INDEX_MAX];
> + struct iio_chan_spec channels[CHANNEL_SCAN_INDEX_MAX + 1];
> struct {
> u32 illum[CHANNEL_SCAN_INDEX_MAX];
> u64 timestamp __aligned(8);
> @@ -33,9 +34,16 @@ struct als_state {
> int scale_post_decml;
> int scale_precision;
> int value_offset;
> + int num_channels;
> s64 timestamp;
> };
>
> +/* The order of usage ids must match scan index starting from CHANNEL_SCAN_INDEX_INTENSITY */
> +static const u32 als_usage_ids[] = {
> + HID_USAGE_SENSOR_LIGHT_ILLUM,
> + HID_USAGE_SENSOR_LIGHT_ILLUM,
> +};
> +
> static const u32 als_sensitivity_addresses[] = {
> HID_USAGE_SENSOR_DATA_LIGHT,
> HID_USAGE_SENSOR_LIGHT_ILLUM,
> @@ -68,6 +76,8 @@ static const struct iio_chan_spec als_channels[] = {
> IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
> };
>
> +static unsigned long als_scan_mask[] = {0, 0};
Global? No. Could be multiple instances with different sensors supported.
Needs to be embedded in the als_state structure so it is per instance.
> +
> /* Adjust channel real bits based on report descriptor */
> static void als_adjust_channel_bit_mask(struct iio_chan_spec *channels,
> int channel, int size)
> @@ -238,27 +248,38 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
> /* Parse report which is specific to an usage id*/
> static int als_parse_report(struct platform_device *pdev,
> struct hid_sensor_hub_device *hsdev,
> - struct iio_chan_spec *channels,
> unsigned usage_id,
> struct als_state *st)
> {
> - int ret;
> + struct iio_chan_spec *channels;
> + int ret, index = 0;
> int i;
>
> - for (i = 0; i <= CHANNEL_SCAN_INDEX_ILLUM; ++i) {
> + channels = st->channels;
> +
> + for (i = 0; i < CHANNEL_SCAN_INDEX_MAX; ++i) {
> ret = sensor_hub_input_get_attribute_info(hsdev,
> HID_INPUT_REPORT,
> usage_id,
> - HID_USAGE_SENSOR_LIGHT_ILLUM,
> + als_usage_ids[i],
> &st->als[i]);
> if (ret < 0)
> - return ret;
> - als_adjust_channel_bit_mask(channels, i, st->als[i].size);
> + continue;
> +
> + channels[index] = als_channels[i];
> + als_scan_mask[0] |= BIT(i);
> + als_adjust_channel_bit_mask(channels, index, st->als[i].size);
> + ++index;
>
> dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index,
> st->als[i].report_id);
> }
>
> + st->num_channels = index;
> + /* Return success even if one usage id is present */
> + if (index)
> + ret = 0;
> +
> st->scale_precision = hid_sensor_format_scale(usage_id,
> &st->als[CHANNEL_SCAN_INDEX_INTENSITY],
> &st->scale_pre_decml, &st->scale_post_decml);
> @@ -294,15 +315,7 @@ static int hid_als_probe(struct platform_device *pdev)
> return ret;
> }
>
> - indio_dev->channels = devm_kmemdup(&pdev->dev, als_channels,
> - sizeof(als_channels), GFP_KERNEL);
> - if (!indio_dev->channels) {
> - dev_err(&pdev->dev, "failed to duplicate channels\n");
> - return -ENOMEM;
> - }
> -
> ret = als_parse_report(pdev, hsdev,
> - (struct iio_chan_spec *)indio_dev->channels,
> hsdev->usage,
> als_state);
> if (ret) {
> @@ -310,8 +323,15 @@ static int hid_als_probe(struct platform_device *pdev)
> return ret;
> }
>
> - indio_dev->num_channels =
> - ARRAY_SIZE(als_channels);
> + /* Add timestamp channel */
> + als_state->channels[als_state->num_channels] = als_channels[CHANNEL_SCAN_INDEX_TIMESTAMP];
> +
> + /* +1 for adding timestamp channel */
> + indio_dev->num_channels = als_state->num_channels + 1;
> +
> + indio_dev->channels = als_state->channels;
> + indio_dev->available_scan_masks = als_scan_mask;
> +
> indio_dev->info = &als_info;
> indio_dev->name = name;
> indio_dev->modes = INDIO_DIRECT_MODE;
^ permalink raw reply
* Re: [PATCH v4 4/4] iio: hid-sensor-als: Add light chromaticity support
From: Jonathan Cameron @ 2024-02-04 15:59 UTC (permalink / raw)
To: Srinivas Pandruvada
Cc: jikos, lars, Basavaraj.Natikar, linux-input, linux-iio,
linux-kernel
In-Reply-To: <20240204130332.2635760-5-srinivas.pandruvada@linux.intel.com>
On Sun, 4 Feb 2024 05:03:32 -0800
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> wrote:
> From: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
>
> On some platforms, ambient color sensors also support the x and y light
> colors, which represent the coordinates on the CIE 1931 chromaticity
> diagram. Add light chromaticity x and y.
>
> Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Rest of series looks fine to me.
Jonathan
^ permalink raw reply
* Re: [PATCH v7 00/39] ep93xx device tree conversion
From: andy.shevchenko @ 2024-02-04 17:03 UTC (permalink / raw)
To: Nikita Shubin
Cc: Hartley Sweeten, Alexander Sverdlin, Russell King,
Lukasz Majewski, Linus Walleij, Bartosz Golaszewski,
Andy Shevchenko, Michael Turquette, Stephen Boyd,
Sebastian Reichel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Vinod Koul, Wim Van Sebroeck, Guenter Roeck, Thierry Reding,
Uwe Kleine-König, Mark Brown, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Miquel Raynal, Richard Weinberger,
Vignesh Raghavendra, Damien Le Moal, Sergey Shtylyov,
Dmitry Torokhov, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
Ralf Baechle, Wu, Aaron, Lee Jones, Olof Johansson, Niklas Cassel,
linux-arm-kernel, linux-kernel, linux-gpio, linux-clk, linux-pm,
devicetree, dmaengine, linux-watchdog, linux-pwm, linux-spi,
netdev, linux-mtd, linux-ide, linux-input, linux-sound,
Arnd Bergmann, Andy Shevchenko, Bartosz Golaszewski,
Krzysztof Kozlowski, Andy Shevchenko, Andrew Lunn,
Andy Shevchenko
In-Reply-To: <20240118-ep93xx-v7-0-d953846ae771@maquefel.me>
Thu, Jan 18, 2024 at 11:20:43AM +0300, Nikita Shubin kirjoitti:
> The goal is to recieve ACKs for all patches in series to merge it via Arnd branch.
>
> No major changes since last version (v6) all changes are cometic.
>
> Following patches require attention from Stephen Boyd, as they were converted to aux_dev as suggested:
>
> - ARM: ep93xx: add regmap aux_dev
> - clk: ep93xx: add DT support for Cirrus EP93xx
>
> Following patches require attention from Vinod Koul:
>
> - dma: cirrus: Convert to DT for Cirrus EP93xx
> - dma: cirrus: remove platform code
>
> Following patches are dropped:
> - dt-bindings: wdt: Add ts72xx (pulled requested by Wim Van Sebroeck)
>
> Big Thanks to Andy Shevchenko once again.
You're welcome!
I have a few minor comments, I believe if you send a new version it will be
final (at least from my p.o.v.).
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* [PATCH] input: gameport: make gameport_bus const
From: Ricardo B. Marliere @ 2024-02-04 19:56 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: linux-input, linux-kernel, Greg Kroah-Hartman,
Ricardo B. Marliere
Now that the driver core can properly handle constant struct bus_type,
move the gameport_bus variable to be a constant structure as well,
placing it into read-only memory which can not be modified at runtime.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ricardo B. Marliere <ricardo@marliere.net>
---
drivers/input/gameport/gameport.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
index 34f416a3ebcb..cfcc81c47b50 100644
--- a/drivers/input/gameport/gameport.c
+++ b/drivers/input/gameport/gameport.c
@@ -38,7 +38,7 @@ static DEFINE_MUTEX(gameport_mutex);
static LIST_HEAD(gameport_list);
-static struct bus_type gameport_bus;
+static const struct bus_type gameport_bus;
static void gameport_add_port(struct gameport *gameport);
static void gameport_attach_driver(struct gameport_driver *drv);
@@ -813,7 +813,7 @@ static int gameport_bus_match(struct device *dev, struct device_driver *drv)
return !gameport_drv->ignore;
}
-static struct bus_type gameport_bus = {
+static const struct bus_type gameport_bus = {
.name = "gameport",
.dev_groups = gameport_device_groups,
.drv_groups = gameport_driver_groups,
---
base-commit: 7d0f351da46098b3bbb147f886f059473b84ff48
change-id: 20240204-bus_cleanup-input-76cc02d48361
Best regards,
--
Ricardo B. Marliere <ricardo@marliere.net>
^ permalink raw reply related
* Re: [PATCH bpf-next v4 3/3] bpf: treewide: Annotate BPF kfuncs in BTF
From: kernel test robot @ 2024-02-05 2:41 UTC (permalink / raw)
To: Daniel Xu
Cc: oe-lkp, lkp, bpf, linux-input, fsverity, cgroups, netdev,
netfilter-devel, coreteam, mhiramat, daniel, edumazet, fw, hannes,
tytso, ast, eddyz87, kuba, tj, steffen.klassert, yonghong.song,
hawk, rostedt, john.fastabend, pablo, pabeni, jikos, davem,
alexandre.torgue, Herbert Xu, song, dsahern, mcoquelin.stm32,
corbet, lizefan.x, andrii, martin.lau, benjamin.tissoires,
ebiggers, kadlec, shuah, alexei.starovoitov, olsajiri, quentin,
alan.maguire, memxor, kpsingh, sdf, haoluo, jolsa,
mathieu.desnoyers, mykolal, linux-doc, linux-kernel,
linux-trace-kernel, linux-kselftest, linux-stm32,
linux-arm-kernel, oliver.sang
In-Reply-To: <e55150ceecbf0a5d961e608941165c0bee7bc943.1706491398.git.dxu@dxuuu.xyz>
Hello,
kernel test robot noticed "WARNING:at_kernel/bpf/btf.c:#register_btf_kfunc_id_set" on:
commit: 918c4c7dda155568c619b4082fa83ca90ab578a6 ("[PATCH bpf-next v4 3/3] bpf: treewide: Annotate BPF kfuncs in BTF")
url: https://github.com/intel-lab-lkp/linux/commits/Daniel-Xu/bpf-btf-Support-flags-for-BTF_SET8-sets/20240129-092732
base: https://git.kernel.org/cgit/linux/kernel/git/bpf/bpf-next.git master
patch link: https://lore.kernel.org/all/e55150ceecbf0a5d961e608941165c0bee7bc943.1706491398.git.dxu@dxuuu.xyz/
patch subject: [PATCH bpf-next v4 3/3] bpf: treewide: Annotate BPF kfuncs in BTF
in testcase: boot
compiler: clang-17
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
(please refer to attached dmesg/kmsg for entire log/backtrace)
+-----------------------------------------------------------------+------------+------------+
| | 05221438c4 | 918c4c7dda |
+-----------------------------------------------------------------+------------+------------+
| WARNING:at_kernel/bpf/btf.c:#register_btf_kfunc_id_set | 0 | 7 |
| EIP:register_btf_kfunc_id_set | 0 | 7 |
| calltrace:do_softirq_own_stack | 0 | 7 |
+-----------------------------------------------------------------+------------+------------+
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202402041610.775e7f75-lkp@intel.com
[ 49.044594][ T1] ------------[ cut here ]------------
[ 49.045857][ T1] WARNING: CPU: 1 PID: 1 at kernel/bpf/btf.c:8048 register_btf_kfunc_id_set (??:?)
[ 49.048024][ T1] Modules linked in:
[ 49.048925][ T1] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 6.8.0-rc1-00457-g918c4c7dda15 #6
[ 49.051230][ T1] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 49.053616][ T1] EIP: register_btf_kfunc_id_set (??:?)
[ 49.054969][ T1] Code: 04 01 75 0b b8 ea ff ff ff 83 3a 00 74 1c c3 b9 0d 00 00 00 83 f8 20 77 07 8b 0c 85 28 a2 71 d7 55 89 e5 e8 13 00 00 00 5d c3 <0f> 0b c3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 55 89 e5 53 57
All code
========
0: 04 01 add $0x1,%al
2: 75 0b jne 0xf
4: b8 ea ff ff ff mov $0xffffffea,%eax
9: 83 3a 00 cmpl $0x0,(%rdx)
c: 74 1c je 0x2a
e: c3 retq
f: b9 0d 00 00 00 mov $0xd,%ecx
14: 83 f8 20 cmp $0x20,%eax
17: 77 07 ja 0x20
19: 8b 0c 85 28 a2 71 d7 mov -0x288e5dd8(,%rax,4),%ecx
20: 55 push %rbp
21: 89 e5 mov %esp,%ebp
23: e8 13 00 00 00 callq 0x3b
28: 5d pop %rbp
29: c3 retq
2a:* 0f 0b ud2 <-- trapping instruction
2c: c3 retq
2d: 90 nop
2e: 90 nop
2f: 90 nop
30: 90 nop
31: 90 nop
32: 90 nop
33: 90 nop
34: 90 nop
35: 90 nop
36: 90 nop
37: 90 nop
38: 90 nop
39: 90 nop
3a: 90 nop
3b: 55 push %rbp
3c: 89 e5 mov %esp,%ebp
3e: 53 push %rbx
3f: 57 push %rdi
Code starting with the faulting instruction
===========================================
0: 0f 0b ud2
2: c3 retq
3: 90 nop
4: 90 nop
5: 90 nop
6: 90 nop
7: 90 nop
8: 90 nop
9: 90 nop
a: 90 nop
b: 90 nop
c: 90 nop
d: 90 nop
e: 90 nop
f: 90 nop
10: 90 nop
11: 55 push %rbp
12: 89 e5 mov %esp,%ebp
14: 53 push %rbx
15: 57 push %rdi
[ 49.059550][ T1] EAX: ffffffea EBX: 00000000 ECX: d9356fb0 EDX: d7c2b154
[ 49.061229][ T1] ESI: 00000000 EDI: 0000019a EBP: c028dc48 ESP: c028dc38
[ 49.062886][ T1] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010246
[ 49.064685][ T1] CR0: 80050033 CR2: 00000000 CR3: 189ab000 CR4: 000406f0
[ 49.066358][ T1] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[ 49.068020][ T1] DR6: fffe0ff0 DR7: 00000400
[ 49.069132][ T1] Call Trace:
[ 49.069902][ T1] ? show_regs (??:?)
[ 49.070890][ T1] ? register_btf_kfunc_id_set (??:?)
[ 49.072187][ T1] ? __warn (??:?)
[ 49.073151][ T1] ? register_btf_kfunc_id_set (??:?)
[ 49.074480][ T1] ? register_btf_kfunc_id_set (??:?)
[ 49.075751][ T1] ? report_bug (??:?)
[ 49.076858][ T1] ? exc_overflow (??:?)
[ 49.077925][ T1] ? handle_bug (traps.c:?)
[ 49.078947][ T1] ? exc_invalid_op (??:?)
[ 49.080030][ T1] ? handle_exception (init_task.c:?)
[ 49.081174][ T1] ? get_seg_base_limit (insn-eval.c:?)
[ 49.082393][ T1] ? mutex_lock_killable_nested (??:?)
[ 49.083707][ T1] ? exc_overflow (??:?)
[ 49.084782][ T1] ? register_btf_kfunc_id_set (??:?)
[ 49.086126][ T1] ? mutex_lock_killable_nested (??:?)
[ 49.087468][ T1] ? exc_overflow (??:?)
[ 49.088520][ T1] ? register_btf_kfunc_id_set (??:?)
[ 49.089864][ T1] ? cubictcp_register (tcp_cubic.c:?)
[ 49.090991][ T1] do_one_initcall (??:?)
[ 49.092136][ T1] ? pvclock_clocksource_read_nowd (??:?)
[ 49.093607][ T1] ? __lock_acquire (lockdep.c:?)
[ 49.094756][ T1] ? kvm_sched_clock_read (kvmclock.c:?)
[ 49.095985][ T1] ? sched_clock_noinstr (??:?)
[ 49.097144][ T1] ? local_clock_noinstr (??:?)
[ 49.098393][ T1] ? __lock_acquire (lockdep.c:?)
[ 49.099575][ T1] ? sched_clock_noinstr (??:?)
[ 49.100746][ T1] ? local_clock_noinstr (??:?)
[ 49.101997][ T1] ? pvclock_clocksource_read_nowd (??:?)
[ 49.103439][ T1] ? kvm_sched_clock_read (kvmclock.c:?)
[ 49.104673][ T1] ? pvclock_clocksource_read_nowd (??:?)
[ 49.106095][ T1] ? kvm_sched_clock_read (kvmclock.c:?)
[ 49.107310][ T1] ? sched_clock_noinstr (??:?)
[ 49.109773][ T1] ? local_clock_noinstr (??:?)
[ 49.111018][ T1] ? __this_cpu_preempt_check (??:?)
[ 49.112289][ T1] ? irqtime_account_irq (??:?)
[ 49.113534][ T1] ? irqtime_account_delta (build_policy.c:?)
[ 49.114812][ T1] ? irqentry_exit (??:?)
[ 49.115860][ T1] ? __this_cpu_preempt_check (??:?)
[ 49.117126][ T1] ? lockdep_hardirqs_on (??:?)
[ 49.118370][ T1] ? sysvec_reboot (??:?)
[ 49.119450][ T1] ? trace_hardirqs_on (??:?)
[ 49.120623][ T1] ? irqentry_exit (??:?)
[ 49.121703][ T1] ? sysvec_reschedule_ipi (??:?)
[ 49.122962][ T1] ? handle_exception (init_task.c:?)
[ 49.124130][ T1] ? strlen (??:?)
[ 49.125054][ T1] ? next_arg (??:?)
[ 49.126086][ T1] ? parse_args (??:?)
[ 49.127134][ T1] ? tcp_diag_init (tcp_cubic.c:?)
[ 49.128257][ T1] do_initcall_level (main.c:?)
[ 49.129398][ T1] ? kernel_init (main.c:?)
[ 49.130474][ T1] do_initcalls (main.c:?)
[ 49.131494][ T1] do_basic_setup (main.c:?)
[ 49.132558][ T1] kernel_init_freeable (main.c:?)
[ 49.133781][ T1] ? rest_init (main.c:?)
[ 49.134848][ T1] ? rest_init (main.c:?)
[ 49.135885][ T1] kernel_init (main.c:?)
[ 49.136958][ T1] ret_from_fork (??:?)
[ 49.137979][ T1] ret_from_fork_asm (??:?)
[ 49.139078][ T1] entry_INT80_32 (init_task.c:?)
[ 49.140171][ T1] irq event stamp: 16737757
[ 49.141202][ T1] hardirqs last enabled at (16737765): console_unlock (??:?)
[ 49.143298][ T1] hardirqs last disabled at (16737774): console_unlock (??:?)
[ 49.145355][ T1] softirqs last enabled at (16737610): do_softirq_own_stack (??:?)
[ 49.147553][ T1] softirqs last disabled at (16737605): do_softirq_own_stack (??:?)
[ 49.149757][ T1] ---[ end trace 0000000000000000 ]---
[ 49.151671][ T1] NET: Registered PF_INET6 protocol family
[ 49.156896][ T1] Segment Routing with IPv6
[ 49.158068][ T1] In-situ OAM (IOAM) with IPv6
[ 49.159300][ T1] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 49.162798][ T1] NET: Registered PF_PACKET protocol family
[ 49.164686][ T1] 9pnet: Installing 9P2000 support
[ 49.166257][ T1] start plist test
[ 49.168281][ T1] end plist test
[ 49.173855][ T1] IPI shorthand broadcast: enabled
[ 49.175165][ C0] ... APIC ID: 00000000 (0)
[ 49.176383][ C0] ... APIC VERSION: 00050014
[ 49.177486][ C0] 0000000000000000000000000000000000000000000000000000000000000000
[ 49.177486][ C0] 0000000000000000000000000000000000000000000000000000000008001000
The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240204/202402041610.775e7f75-lkp@intel.com
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* Re: Suspected bug in hid-microsoft.c
From: Taco Jerkface @ 2024-02-05 4:26 UTC (permalink / raw)
To: Benjamin Tissoires; +Cc: Siarhei Vishniakou, linux-input, jikos
In-Reply-To: <CAEQPD4TNkGn-xjLqNiNb5c2Hc9P-4Hpeq-92tBSPJiJ=4-dsZw@mail.gmail.com>
FYI,
I believe your hunch was correct, and the controller is using hidraw
with root and evdev without root.
The program evemu-record does read output without root permissions.I
recorded the output to here:
https://pastebin.com/uTMSLkfw
It looks like Event code 240 (KEY_UNKNOWN) is used for all of the
paddles, reporting 1,2,4,8 for each paddle. It reports 0 when a
paddle is released, and the sum when multiple are pressed
simultaneously.
I'm not experienced enough to know the next steps in debugging the
driver, but let me know if there's anything else I can try.
Cheers
On Wed, Jan 31, 2024 at 12:27 PM Taco Jerkface <tacodog311@gmail.com> wrote:
>
> Thanks for the response!
> I put some diagnostic info below, but please let me know if I can do
> anything else to help.
> Thank you.
>
> hid-recorder does not see the controller when connected with USB.
>
> sudo hid-recorder
> Available devices:
> /dev/hidraw0: DLL07D1:01 044E:120B
> Select the device event number [0-0]:
>
>
> When connected with Bluetooth, hid-recorder sees the device as "Xbox
> Wireless Controler" and the dump is below:
>
> sudo hid-recorder
> Available devices:
> /dev/hidraw0: DLL07D1:01 044E:120B
> /dev/hidraw1: Xbox Wireless Controller
> Select the device event number [0-1]: 1
> # Xbox Wireless Controller
> # 0x05, 0x01, // Usage Page (Generic Desktop) 0
> # 0x09, 0x05, // Usage (Game Pad) 2
> # 0xa1, 0x01, // Collection (Application) 4
> # 0x85, 0x01, // Report ID (1) 6
> # 0x09, 0x01, // Usage (Pointer) 8
> # 0xa1, 0x00, // Collection (Physical) 10
> # 0x09, 0x30, // Usage (X) 12
> # 0x09, 0x31, // Usage (Y) 14
> # 0x15, 0x00, // Logical Minimum (0) 16
> # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 18
> # 0x95, 0x02, // Report Count (2) 23
> # 0x75, 0x10, // Report Size (16) 25
> # 0x81, 0x02, // Input (Data,Var,Abs) 27
> # 0xc0, // End Collection 29
> # 0x09, 0x01, // Usage (Pointer) 30
> # 0xa1, 0x00, // Collection (Physical) 32
> # 0x09, 0x32, // Usage (Z) 34
> # 0x09, 0x35, // Usage (Rz) 36
> # 0x15, 0x00, // Logical Minimum (0) 38
> # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 40
> # 0x95, 0x02, // Report Count (2) 45
> # 0x75, 0x10, // Report Size (16) 47
> # 0x81, 0x02, // Input (Data,Var,Abs) 49
> # 0xc0, // End Collection 51
> # 0x05, 0x02, // Usage Page (Simulation Controls) 52
> # 0x09, 0xc5, // Usage (Brake) 54
> # 0x15, 0x00, // Logical Minimum (0) 56
> # 0x26, 0xff, 0x03, // Logical Maximum (1023) 58
> # 0x95, 0x01, // Report Count (1) 61
> # 0x75, 0x0a, // Report Size (10) 63
> # 0x81, 0x02, // Input (Data,Var,Abs) 65
> # 0x15, 0x00, // Logical Minimum (0) 67
> # 0x25, 0x00, // Logical Maximum (0) 69
> # 0x75, 0x06, // Report Size (6) 71
> # 0x95, 0x01, // Report Count (1) 73
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 75
> # 0x05, 0x02, // Usage Page (Simulation Controls) 77
> # 0x09, 0xc4, // Usage (Accelerator) 79
> # 0x15, 0x00, // Logical Minimum (0) 81
> # 0x26, 0xff, 0x03, // Logical Maximum (1023) 83
> # 0x95, 0x01, // Report Count (1) 86
> # 0x75, 0x0a, // Report Size (10) 88
> # 0x81, 0x02, // Input (Data,Var,Abs) 90
> # 0x15, 0x00, // Logical Minimum (0) 92
> # 0x25, 0x00, // Logical Maximum (0) 94
> # 0x75, 0x06, // Report Size (6) 96
> # 0x95, 0x01, // Report Count (1) 98
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 100
> # 0x05, 0x01, // Usage Page (Generic Desktop) 102
> # 0x09, 0x39, // Usage (Hat switch) 104
> # 0x15, 0x01, // Logical Minimum (1) 106
> # 0x25, 0x08, // Logical Maximum (8) 108
> # 0x35, 0x00, // Physical Minimum (0) 110
> # 0x46, 0x3b, 0x01, // Physical Maximum (315) 112
> # 0x66, 0x14, 0x00, // Unit (EnglishRotation: deg) 115
> # 0x75, 0x04, // Report Size (4) 118
> # 0x95, 0x01, // Report Count (1) 120
> # 0x81, 0x42, // Input (Data,Var,Abs,Null) 122
> # 0x75, 0x04, // Report Size (4) 124
> # 0x95, 0x01, // Report Count (1) 126
> # 0x15, 0x00, // Logical Minimum (0) 128
> # 0x25, 0x00, // Logical Maximum (0) 130
> # 0x35, 0x00, // Physical Minimum (0) 132
> # 0x45, 0x00, // Physical Maximum (0) 134
> # 0x65, 0x00, // Unit (None) 136
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 138
> # 0x05, 0x09, // Usage Page (Button) 140
> # 0x19, 0x01, // Usage Minimum (1) 142
> # 0x29, 0x0f, // Usage Maximum (15) 144
> # 0x15, 0x00, // Logical Minimum (0) 146
> # 0x25, 0x01, // Logical Maximum (1) 148
> # 0x75, 0x01, // Report Size (1) 150
> # 0x95, 0x0f, // Report Count (15) 152
> # 0x81, 0x02, // Input (Data,Var,Abs) 154
> # 0x15, 0x00, // Logical Minimum (0) 156
> # 0x25, 0x00, // Logical Maximum (0) 158
> # 0x75, 0x01, // Report Size (1) 160
> # 0x95, 0x01, // Report Count (1) 162
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 164
> # 0x05, 0x0c, // Usage Page (Consumer Devices) 166
> # 0x0a, 0xb2, 0x00, // Usage (Record) 168
> # 0x15, 0x00, // Logical Minimum (0) 171
> # 0x25, 0x01, // Logical Maximum (1) 173
> # 0x95, 0x01, // Report Count (1) 175
> # 0x75, 0x01, // Report Size (1) 177
> # 0x81, 0x02, // Input (Data,Var,Abs) 179
> # 0x15, 0x00, // Logical Minimum (0) 181
> # 0x25, 0x00, // Logical Maximum (0) 183
> # 0x75, 0x07, // Report Size (7) 185
> # 0x95, 0x01, // Report Count (1) 187
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 189
> # 0x05, 0x0c, // Usage Page (Consumer Devices) 191
> # 0x09, 0x01, // Usage (Consumer Control) 193
> # 0xa1, 0x01, // Collection (Application) 195
> # 0x0a, 0x85, 0x00, // Usage (Order Movie) 197
> # 0x15, 0x00, // Logical Minimum (0) 200
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 202
> # 0x95, 0x01, // Report Count (1) 205
> # 0x75, 0x08, // Report Size (8) 207
> # 0x81, 0x02, // Input (Data,Var,Abs) 209
> # 0x0a, 0x99, 0x00, // Usage (Media Select Security) 211
> # 0x15, 0x00, // Logical Minimum (0) 214
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 216
> # 0x95, 0x01, // Report Count (1) 219
> # 0x75, 0x04, // Report Size (4) 221
> # 0x81, 0x02, // Input (Data,Var,Abs) 223
> # 0x15, 0x00, // Logical Minimum (0) 225
> # 0x25, 0x00, // Logical Maximum (0) 227
> # 0x95, 0x01, // Report Count (1) 229
> # 0x75, 0x04, // Report Size (4) 231
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 233
> # 0x0a, 0x81, 0x00, // Usage (Assign Selection) 235
> # 0x15, 0x00, // Logical Minimum (0) 238
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 240
> # 0x95, 0x01, // Report Count (1) 243
> # 0x75, 0x04, // Report Size (4) 245
> # 0x81, 0x02, // Input (Data,Var,Abs) 247
> # 0x15, 0x00, // Logical Minimum (0) 249
> # 0x25, 0x00, // Logical Maximum (0) 251
> # 0x95, 0x01, // Report Count (1) 253
> # 0x75, 0x04, // Report Size (4) 255
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 257
> # 0xc0, // End Collection 259
> # 0x05, 0x0f, // Usage Page (Vendor Usage Page 0x0f) 260
> # 0x09, 0x21, // Usage (Vendor Usage 0x21) 262
> # 0x85, 0x03, // Report ID (3) 264
> # 0xa1, 0x02, // Collection (Logical) 266
> # 0x09, 0x97, // Usage (Vendor Usage 0x97) 268
> # 0x15, 0x00, // Logical Minimum (0) 270
> # 0x25, 0x01, // Logical Maximum (1) 272
> # 0x75, 0x04, // Report Size (4) 274
> # 0x95, 0x01, // Report Count (1) 276
> # 0x91, 0x02, // Output (Data,Var,Abs) 278
> # 0x15, 0x00, // Logical Minimum (0) 280
> # 0x25, 0x00, // Logical Maximum (0) 282
> # 0x75, 0x04, // Report Size (4) 284
> # 0x95, 0x01, // Report Count (1) 286
> # 0x91, 0x03, // Output (Cnst,Var,Abs) 288
> # 0x09, 0x70, // Usage (Vendor Usage 0x70) 290
> # 0x15, 0x00, // Logical Minimum (0) 292
> # 0x25, 0x64, // Logical Maximum (100) 294
> # 0x75, 0x08, // Report Size (8) 296
> # 0x95, 0x04, // Report Count (4) 298
> # 0x91, 0x02, // Output (Data,Var,Abs) 300
> # 0x09, 0x50, // Usage (Vendor Usage 0x50) 302
> # 0x66, 0x01, 0x10, // Unit (SILinear: s) 304
> # 0x55, 0x0e, // Unit Exponent (-2) 307
> # 0x15, 0x00, // Logical Minimum (0) 309
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 311
> # 0x75, 0x08, // Report Size (8) 314
> # 0x95, 0x01, // Report Count (1) 316
> # 0x91, 0x02, // Output (Data,Var,Abs) 318
> # 0x09, 0xa7, // Usage (Vendor Usage 0xa7) 320
> # 0x15, 0x00, // Logical Minimum (0) 322
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 324
> # 0x75, 0x08, // Report Size (8) 327
> # 0x95, 0x01, // Report Count (1) 329
> # 0x91, 0x02, // Output (Data,Var,Abs) 331
> # 0x65, 0x00, // Unit (None) 333
> # 0x55, 0x00, // Unit Exponent (0) 335
> # 0x09, 0x7c, // Usage (Vendor Usage 0x7c) 337
> # 0x15, 0x00, // Logical Minimum (0) 339
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 341
> # 0x75, 0x08, // Report Size (8) 344
> # 0x95, 0x01, // Report Count (1) 346
> # 0x91, 0x02, // Output (Data,Var,Abs) 348
> # 0xc0, // End Collection 350
> # 0x05, 0x0c, // Usage Page (Consumer Devices) 351
> # 0x09, 0x01, // Usage (Consumer Control) 353
> # 0x85, 0x0c, // Report ID (12) 355
> # 0xa1, 0x01, // Collection (Application) 357
> # 0x0a, 0x9e, 0x00, // Usage (Media Select SAP) 359
> # 0x15, 0x00, // Logical Minimum (0) 362
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 364
> # 0x95, 0x01, // Report Count (1) 367
> # 0x75, 0x08, // Report Size (8) 369
> # 0x81, 0x02, // Input (Data,Var,Abs) 371
> # 0x0a, 0xa1, 0x00, // Usage (Once) 373
> # 0x15, 0x00, // Logical Minimum (0) 376
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 378
> # 0x95, 0x01, // Report Count (1) 381
> # 0x75, 0x08, // Report Size (8) 383
> # 0x81, 0x02, // Input (Data,Var,Abs) 385
> # 0x0a, 0xa2, 0x00, // Usage (Daily) 387
> # 0x15, 0x00, // Logical Minimum (0) 390
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 392
> # 0x95, 0x01, // Report Count (1) 395
> # 0x75, 0x08, // Report Size (8) 397
> # 0x81, 0x02, // Input (Data,Var,Abs) 399
> # 0x0a, 0xa3, 0x00, // Usage (Weekly) 401
> # 0x15, 0x00, // Logical Minimum (0) 404
> # 0x26, 0xff, 0x00, // Logical Maximum (255) 406
> # 0x95, 0x01, // Report Count (1) 409
> # 0x75, 0x08, // Report Size (8) 411
> # 0x81, 0x02, // Input (Data,Var,Abs) 413
> # 0xc0, // End Collection 415
> # 0xc0, // End Collection 416
> # 0x05, 0x01, // Usage Page (Generic Desktop) 417
> # 0x09, 0x06, // Usage (Keyboard) 419
> # 0xa1, 0x01, // Collection (Application) 421
> # 0x85, 0x05, // Report ID (5) 423
> # 0x05, 0x07, // Usage Page (Keyboard) 425
> # 0x19, 0xe0, // Usage Minimum (224) 427
> # 0x29, 0xe7, // Usage Maximum (231) 429
> # 0x15, 0x00, // Logical Minimum (0) 431
> # 0x25, 0x01, // Logical Maximum (1) 433
> # 0x75, 0x01, // Report Size (1) 435
> # 0x95, 0x08, // Report Count (8) 437
> # 0x81, 0x02, // Input (Data,Var,Abs) 439
> # 0x95, 0x01, // Report Count (1) 441
> # 0x75, 0x08, // Report Size (8) 443
> # 0x81, 0x03, // Input (Cnst,Var,Abs) 445
> # 0x95, 0x06, // Report Count (6) 447
> # 0x75, 0x08, // Report Size (8) 449
> # 0x15, 0x00, // Logical Minimum (0) 451
> # 0x25, 0x65, // Logical Maximum (101) 453
> # 0x05, 0x07, // Usage Page (Keyboard) 455
> # 0x19, 0x00, // Usage Minimum (0) 457
> # 0x29, 0x65, // Usage Maximum (101) 459
> # 0x81, 0x00, // Input (Data,Arr,Abs) 461
> # 0xc0, // End Collection 463
> #
> R: 464 05 01 09 05 a1 01 85 01 09 01 a1 00 09 30 09 31 15 00 27 ff ff
> 00 00 95 02 75 10 81 02 c0 09 01 a1 00 09 32 09 35 15 00 27 ff ff 00
> 00 95 02 75 10 81 02 c0 05 02 09 c5 15 00 26 ff 03 95 01 75 0a
> 81 02 15 00 25 00 75 06 95 01 81 03 05 02 09 c4 15 00 26 ff 03 95 01
> 75 0a 81 02 15 00 25 00 75 06 95 01 81 03 05 01 09 39 15 01 25 08 35
> 00 46 3b 01 66 14 00 75 04 95 01 81 42 75 04 95 01 15 00 25 00
> 35 00 45 00 65 00 81 03 05 09 19 01 29 0f 15 00 25 01 75 01 95 0f 81
> 02 15 00 25 00 75 01 95 01 81 03 05 0c 0a b2 00 15 00 25 01 95 01 75
> 01 81 02 15 00 25 00 75 07 95 01 81 03 05 0c 09 01 a1 01 0a 85
> 00 15 00 26 ff 00 95 01 75 08 81 02 0a 99 00 15 00 26 ff 00 95 01 75
> 04 81 02 15 00 25 00 95 01 75 04 81 03 0a 81 00 15 00 26 ff 00 95 01
> 75 04 81 02 15 00 25 00 95 01 75 04 81 03 c0 05 0f 09 21 85 03
> a1 02 09 97 15 00 25 01 75 04 95 01 91 02 15 00 25 00 75 04 95 01 91
> 03 09 70 15 00 25 64 75 08 95 04 91 02 09 50 66 01 10 55 0e 15 00 26
> ff 00 75 08 95 01 91 02 09 a7 15 00 26 ff 00 75 08 95 01 91 02
> 65 00 55 00 09 7c 15 00 26 ff 00 75 08 95 01 91 02 c0 05 0c 09 01 85
> 0c a1 01 0a 9e 00 15 00 26 ff 00 95 01 75 08 81 02 0a a1 00 15 00 26
> ff 00 95 01 75 08 81 02 0a a2 00 15 00 26 ff 00 95 01 75 08 81
> 02 0a a3 00 15 00 26 ff 00 95 01 75 08 81 02 c0 c0 05 01 09 06 a1 01
> 85 05 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81
> 03 95 06 75 08 15 00 25 65 05 07 19 00 29 65 81 00 c0
> N: Xbox Wireless Controller
> I: 5 045e 0b22
>
> On Wed, Jan 31, 2024 at 2:57 AM Benjamin Tissoires
> <benjamin.tissoires@redhat.com> wrote:
> >
> > Hi,
> >
> > [Adding Siarhei who added support for those controllers in the kernel]
> >
> > On Wed, Jan 31, 2024 at 7:27 AM Taco Jerkface <tacodog311@gmail.com> wrote:
> > >
> > > Resending without HTML:
> > >
> > > Hi,
> > >
> > > I hope this is the correct contact for this report, I found you as the
> > > maintainer in the hid-microsoft.c.
> > >
> > > I believe there is a bug in the microsoft bluetooth driver for the
> > > Xbox Elite Series 2 controller. I have been experiencing issues with
> > > it that I initially thought were SDL related. However the SDL team
> > > seems to think this is driver related. My SDL bug report information
> > > is here:
> > >
> > > https://github.com/libsdl-org/SDL/issues/8907
> >
> > Hard to say anything with that bug report because we don't know what
> > those tools are supposed to do, and how they access the device (hidraw
> > or evdev).
> >
> > Note that the bluetooth version is using uhid because it's a BLE controller.
> > Basically when there is a BLE controller, bluez handles the transport
> > layer from userspace, and injects the events through uhid so that it's
> > handled as a normal kernel device.
> >
> > So there is no "uhid userspace driver", bluez just blindly forwards
> > the events/reports/commands as it is told.
> >
> > >
> > > Basically, SDL reads the controller correctly when connected by USB,
> > > and if I run "controllermap" with root permission, but with user
> > > permissions it misreads
> >
> > Using root or not shouldn't change the way your program sees the
> > device: if you are capable of opening it, then you should get the same
> > output.
> >
> > However, the immediate explanation that would come to my mind is that
> > you are not using the "same" controller in both cases:
> > - maybe that when you use it with root you are talking to the device
> > through hidraw
> > - maybe when you are not root you are talking to the device through evdev
> >
> > Again, not knowing the tools doesn't help me here :(
> >
> > > the number of buttons as 122, the first paddle
> > > button on the back seems to act like the "screenshot" button from the
> > > 1914 controller, and the other paddle buttons are not read. All
> > > buttons read fine with evites, but the paddle buttons "KEY_UNKNOWN"
> > >
> > > type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
> > >
> > > Please let me know if there is a better contact for this, or if there
> > > is anything I can do to help identify the problem.
> > >
> >
> > Ideally I'd like Siarhei to answer here. But in the meantime, we could
> > fetch some logs from the device itself which would allow me to better
> > understand the issue:
> > please use hid-recorder from hid-tools[1] to get the logs, and attach
> > the whole output, with a recording of the events that are problematic:
> > $> pip3 install hid-tools
> > $> sudo hid-recorder
> >
> > Please dump 2 hid-recorder outputs, one with USB, and one with
> > Bluetooth, with the same event sequence if possible so we can compare
> > between the 2.
> >
> > Cheers,
> > Benjamin
> >
> > [1] https://gitlab.freedesktop.org/libevdev/hid-tools
> >
^ permalink raw reply
* Re: [PATCH v3 4/4] ARM: dts: imx6sl-tolino-shine2hd: fix touchscreen rotation
From: Shawn Guo @ 2024-02-05 6:35 UTC (permalink / raw)
To: Andreas Kemnade
Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt,
shawnguo, s.hauer, kernel, festevam, linux-imx, rydberg,
linus.walleij, Jonathan.Cameron, u.kleine-koenig, heiko,
linux-input, devicetree, linux-kernel, linux-arm-kernel
In-Reply-To: <20231223221213.774868-5-andreas@kemnade.info>
On Sat, Dec 23, 2023 at 11:12:13PM +0100, Andreas Kemnade wrote:
> The display is in landscape orientation, but the touchscreen is in portrait
> orientation. Specify that properly in the devicetree.
>
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Applied, thanks!
^ permalink raw reply
* Re: Suspected bug in hid-microsoft.c
From: Benjamin Tissoires @ 2024-02-05 9:49 UTC (permalink / raw)
To: Taco Jerkface; +Cc: Siarhei Vishniakou, linux-input, jikos
In-Reply-To: <CAEQPD4TBPsh0At4Eqmox++AiGes3q16O5qva6KNQMwzmRPySOQ@mail.gmail.com>
On Mon, Feb 5, 2024 at 5:26 AM Taco Jerkface <tacodog311@gmail.com> wrote:
>
> FYI,
>
> I believe your hunch was correct, and the controller is using hidraw
> with root and evdev without root.
Hah! I'm not overly surprised otherwise, but that pretty much sums up
the state of joysticks/gamepads on the linux world. There is no single
stack to handle it which leads to confusion. Sigh.
>
> The program evemu-record does read output without root permissions.I
> recorded the output to here:
>
> https://pastebin.com/uTMSLkfw
>
> It looks like Event code 240 (KEY_UNKNOWN) is used for all of the
> paddles, reporting 1,2,4,8 for each paddle. It reports 0 when a
> paddle is released, and the sum when multiple are pressed
> simultaneously.
This pretty much means that the value of "KEY_UNKNOWN" should be 4
individual bits, and they should be fixed in the kernel, assuming
someone wants to fix them.
>
> I'm not experienced enough to know the next steps in debugging the
> driver, but let me know if there's anything else I can try.
So we have several options:
1. (easiest) tune your udev rule to also give user access to the
hidraw subsystem on this device. SDL should be able to read it
directly, and handle it properly, but this won't solve for future
users
2. (no kernel compilation required) we can try to fix the report
descriptor of the device through HID-BPF. Assuming you have
CONFIG_HID_BPF enabled in your kernel, we can relatively easily change
the way the device is exported/handled by the kernel, to make it
useful hopefully
3. (hardest IMO as you'll have to recompile your kernel for the tests)
we can try to tune hid-microsoft.c to properly export these buttons
For 2 and 3, I'll need some events from your device with hid-recorder.
You only gave me the report descriptor, but no events which are hard
to deduce based on the long report descriptor.
Also for 2 and 3 we need to have a BTN_* button code to use, and I
don't know which ones should be used from the top of my head. HID-BPF
would be easiest to use as we can let the user decide of it, while
we'll need to have a more formal usage in case we fix hid-microsoft.
For 1, maybe SDL (or Steam) already ships some udev rules, and
submitting a fix there would make things working for everybody.
Anyway, depending on how much you want this to be fixed and what you
can do (is CONFIG_HID_BPF enabled in your distro? and can you
recompile a kernel module?) we can figure out the next step.
Cheers,
Benjamin
>
> Cheers
>
> On Wed, Jan 31, 2024 at 12:27 PM Taco Jerkface <tacodog311@gmail.com> wrote:
> >
> > Thanks for the response!
> > I put some diagnostic info below, but please let me know if I can do
> > anything else to help.
> > Thank you.
> >
> > hid-recorder does not see the controller when connected with USB.
> >
> > sudo hid-recorder
> > Available devices:
> > /dev/hidraw0: DLL07D1:01 044E:120B
> > Select the device event number [0-0]:
> >
> >
> > When connected with Bluetooth, hid-recorder sees the device as "Xbox
> > Wireless Controler" and the dump is below:
> >
> > sudo hid-recorder
> > Available devices:
> > /dev/hidraw0: DLL07D1:01 044E:120B
> > /dev/hidraw1: Xbox Wireless Controller
> > Select the device event number [0-1]: 1
> > # Xbox Wireless Controller
> > # 0x05, 0x01, // Usage Page (Generic Desktop) 0
> > # 0x09, 0x05, // Usage (Game Pad) 2
> > # 0xa1, 0x01, // Collection (Application) 4
> > # 0x85, 0x01, // Report ID (1) 6
> > # 0x09, 0x01, // Usage (Pointer) 8
> > # 0xa1, 0x00, // Collection (Physical) 10
> > # 0x09, 0x30, // Usage (X) 12
> > # 0x09, 0x31, // Usage (Y) 14
> > # 0x15, 0x00, // Logical Minimum (0) 16
> > # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 18
> > # 0x95, 0x02, // Report Count (2) 23
> > # 0x75, 0x10, // Report Size (16) 25
> > # 0x81, 0x02, // Input (Data,Var,Abs) 27
> > # 0xc0, // End Collection 29
> > # 0x09, 0x01, // Usage (Pointer) 30
> > # 0xa1, 0x00, // Collection (Physical) 32
> > # 0x09, 0x32, // Usage (Z) 34
> > # 0x09, 0x35, // Usage (Rz) 36
> > # 0x15, 0x00, // Logical Minimum (0) 38
> > # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 40
> > # 0x95, 0x02, // Report Count (2) 45
> > # 0x75, 0x10, // Report Size (16) 47
> > # 0x81, 0x02, // Input (Data,Var,Abs) 49
> > # 0xc0, // End Collection 51
> > # 0x05, 0x02, // Usage Page (Simulation Controls) 52
> > # 0x09, 0xc5, // Usage (Brake) 54
> > # 0x15, 0x00, // Logical Minimum (0) 56
> > # 0x26, 0xff, 0x03, // Logical Maximum (1023) 58
> > # 0x95, 0x01, // Report Count (1) 61
> > # 0x75, 0x0a, // Report Size (10) 63
> > # 0x81, 0x02, // Input (Data,Var,Abs) 65
> > # 0x15, 0x00, // Logical Minimum (0) 67
> > # 0x25, 0x00, // Logical Maximum (0) 69
> > # 0x75, 0x06, // Report Size (6) 71
> > # 0x95, 0x01, // Report Count (1) 73
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 75
> > # 0x05, 0x02, // Usage Page (Simulation Controls) 77
> > # 0x09, 0xc4, // Usage (Accelerator) 79
> > # 0x15, 0x00, // Logical Minimum (0) 81
> > # 0x26, 0xff, 0x03, // Logical Maximum (1023) 83
> > # 0x95, 0x01, // Report Count (1) 86
> > # 0x75, 0x0a, // Report Size (10) 88
> > # 0x81, 0x02, // Input (Data,Var,Abs) 90
> > # 0x15, 0x00, // Logical Minimum (0) 92
> > # 0x25, 0x00, // Logical Maximum (0) 94
> > # 0x75, 0x06, // Report Size (6) 96
> > # 0x95, 0x01, // Report Count (1) 98
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 100
> > # 0x05, 0x01, // Usage Page (Generic Desktop) 102
> > # 0x09, 0x39, // Usage (Hat switch) 104
> > # 0x15, 0x01, // Logical Minimum (1) 106
> > # 0x25, 0x08, // Logical Maximum (8) 108
> > # 0x35, 0x00, // Physical Minimum (0) 110
> > # 0x46, 0x3b, 0x01, // Physical Maximum (315) 112
> > # 0x66, 0x14, 0x00, // Unit (EnglishRotation: deg) 115
> > # 0x75, 0x04, // Report Size (4) 118
> > # 0x95, 0x01, // Report Count (1) 120
> > # 0x81, 0x42, // Input (Data,Var,Abs,Null) 122
> > # 0x75, 0x04, // Report Size (4) 124
> > # 0x95, 0x01, // Report Count (1) 126
> > # 0x15, 0x00, // Logical Minimum (0) 128
> > # 0x25, 0x00, // Logical Maximum (0) 130
> > # 0x35, 0x00, // Physical Minimum (0) 132
> > # 0x45, 0x00, // Physical Maximum (0) 134
> > # 0x65, 0x00, // Unit (None) 136
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 138
> > # 0x05, 0x09, // Usage Page (Button) 140
> > # 0x19, 0x01, // Usage Minimum (1) 142
> > # 0x29, 0x0f, // Usage Maximum (15) 144
> > # 0x15, 0x00, // Logical Minimum (0) 146
> > # 0x25, 0x01, // Logical Maximum (1) 148
> > # 0x75, 0x01, // Report Size (1) 150
> > # 0x95, 0x0f, // Report Count (15) 152
> > # 0x81, 0x02, // Input (Data,Var,Abs) 154
> > # 0x15, 0x00, // Logical Minimum (0) 156
> > # 0x25, 0x00, // Logical Maximum (0) 158
> > # 0x75, 0x01, // Report Size (1) 160
> > # 0x95, 0x01, // Report Count (1) 162
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 164
> > # 0x05, 0x0c, // Usage Page (Consumer Devices) 166
> > # 0x0a, 0xb2, 0x00, // Usage (Record) 168
> > # 0x15, 0x00, // Logical Minimum (0) 171
> > # 0x25, 0x01, // Logical Maximum (1) 173
> > # 0x95, 0x01, // Report Count (1) 175
> > # 0x75, 0x01, // Report Size (1) 177
> > # 0x81, 0x02, // Input (Data,Var,Abs) 179
> > # 0x15, 0x00, // Logical Minimum (0) 181
> > # 0x25, 0x00, // Logical Maximum (0) 183
> > # 0x75, 0x07, // Report Size (7) 185
> > # 0x95, 0x01, // Report Count (1) 187
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 189
> > # 0x05, 0x0c, // Usage Page (Consumer Devices) 191
> > # 0x09, 0x01, // Usage (Consumer Control) 193
> > # 0xa1, 0x01, // Collection (Application) 195
> > # 0x0a, 0x85, 0x00, // Usage (Order Movie) 197
> > # 0x15, 0x00, // Logical Minimum (0) 200
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 202
> > # 0x95, 0x01, // Report Count (1) 205
> > # 0x75, 0x08, // Report Size (8) 207
> > # 0x81, 0x02, // Input (Data,Var,Abs) 209
> > # 0x0a, 0x99, 0x00, // Usage (Media Select Security) 211
> > # 0x15, 0x00, // Logical Minimum (0) 214
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 216
> > # 0x95, 0x01, // Report Count (1) 219
> > # 0x75, 0x04, // Report Size (4) 221
> > # 0x81, 0x02, // Input (Data,Var,Abs) 223
> > # 0x15, 0x00, // Logical Minimum (0) 225
> > # 0x25, 0x00, // Logical Maximum (0) 227
> > # 0x95, 0x01, // Report Count (1) 229
> > # 0x75, 0x04, // Report Size (4) 231
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 233
> > # 0x0a, 0x81, 0x00, // Usage (Assign Selection) 235
> > # 0x15, 0x00, // Logical Minimum (0) 238
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 240
> > # 0x95, 0x01, // Report Count (1) 243
> > # 0x75, 0x04, // Report Size (4) 245
> > # 0x81, 0x02, // Input (Data,Var,Abs) 247
> > # 0x15, 0x00, // Logical Minimum (0) 249
> > # 0x25, 0x00, // Logical Maximum (0) 251
> > # 0x95, 0x01, // Report Count (1) 253
> > # 0x75, 0x04, // Report Size (4) 255
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 257
> > # 0xc0, // End Collection 259
> > # 0x05, 0x0f, // Usage Page (Vendor Usage Page 0x0f) 260
> > # 0x09, 0x21, // Usage (Vendor Usage 0x21) 262
> > # 0x85, 0x03, // Report ID (3) 264
> > # 0xa1, 0x02, // Collection (Logical) 266
> > # 0x09, 0x97, // Usage (Vendor Usage 0x97) 268
> > # 0x15, 0x00, // Logical Minimum (0) 270
> > # 0x25, 0x01, // Logical Maximum (1) 272
> > # 0x75, 0x04, // Report Size (4) 274
> > # 0x95, 0x01, // Report Count (1) 276
> > # 0x91, 0x02, // Output (Data,Var,Abs) 278
> > # 0x15, 0x00, // Logical Minimum (0) 280
> > # 0x25, 0x00, // Logical Maximum (0) 282
> > # 0x75, 0x04, // Report Size (4) 284
> > # 0x95, 0x01, // Report Count (1) 286
> > # 0x91, 0x03, // Output (Cnst,Var,Abs) 288
> > # 0x09, 0x70, // Usage (Vendor Usage 0x70) 290
> > # 0x15, 0x00, // Logical Minimum (0) 292
> > # 0x25, 0x64, // Logical Maximum (100) 294
> > # 0x75, 0x08, // Report Size (8) 296
> > # 0x95, 0x04, // Report Count (4) 298
> > # 0x91, 0x02, // Output (Data,Var,Abs) 300
> > # 0x09, 0x50, // Usage (Vendor Usage 0x50) 302
> > # 0x66, 0x01, 0x10, // Unit (SILinear: s) 304
> > # 0x55, 0x0e, // Unit Exponent (-2) 307
> > # 0x15, 0x00, // Logical Minimum (0) 309
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 311
> > # 0x75, 0x08, // Report Size (8) 314
> > # 0x95, 0x01, // Report Count (1) 316
> > # 0x91, 0x02, // Output (Data,Var,Abs) 318
> > # 0x09, 0xa7, // Usage (Vendor Usage 0xa7) 320
> > # 0x15, 0x00, // Logical Minimum (0) 322
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 324
> > # 0x75, 0x08, // Report Size (8) 327
> > # 0x95, 0x01, // Report Count (1) 329
> > # 0x91, 0x02, // Output (Data,Var,Abs) 331
> > # 0x65, 0x00, // Unit (None) 333
> > # 0x55, 0x00, // Unit Exponent (0) 335
> > # 0x09, 0x7c, // Usage (Vendor Usage 0x7c) 337
> > # 0x15, 0x00, // Logical Minimum (0) 339
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 341
> > # 0x75, 0x08, // Report Size (8) 344
> > # 0x95, 0x01, // Report Count (1) 346
> > # 0x91, 0x02, // Output (Data,Var,Abs) 348
> > # 0xc0, // End Collection 350
> > # 0x05, 0x0c, // Usage Page (Consumer Devices) 351
> > # 0x09, 0x01, // Usage (Consumer Control) 353
> > # 0x85, 0x0c, // Report ID (12) 355
> > # 0xa1, 0x01, // Collection (Application) 357
> > # 0x0a, 0x9e, 0x00, // Usage (Media Select SAP) 359
> > # 0x15, 0x00, // Logical Minimum (0) 362
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 364
> > # 0x95, 0x01, // Report Count (1) 367
> > # 0x75, 0x08, // Report Size (8) 369
> > # 0x81, 0x02, // Input (Data,Var,Abs) 371
> > # 0x0a, 0xa1, 0x00, // Usage (Once) 373
> > # 0x15, 0x00, // Logical Minimum (0) 376
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 378
> > # 0x95, 0x01, // Report Count (1) 381
> > # 0x75, 0x08, // Report Size (8) 383
> > # 0x81, 0x02, // Input (Data,Var,Abs) 385
> > # 0x0a, 0xa2, 0x00, // Usage (Daily) 387
> > # 0x15, 0x00, // Logical Minimum (0) 390
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 392
> > # 0x95, 0x01, // Report Count (1) 395
> > # 0x75, 0x08, // Report Size (8) 397
> > # 0x81, 0x02, // Input (Data,Var,Abs) 399
> > # 0x0a, 0xa3, 0x00, // Usage (Weekly) 401
> > # 0x15, 0x00, // Logical Minimum (0) 404
> > # 0x26, 0xff, 0x00, // Logical Maximum (255) 406
> > # 0x95, 0x01, // Report Count (1) 409
> > # 0x75, 0x08, // Report Size (8) 411
> > # 0x81, 0x02, // Input (Data,Var,Abs) 413
> > # 0xc0, // End Collection 415
> > # 0xc0, // End Collection 416
> > # 0x05, 0x01, // Usage Page (Generic Desktop) 417
> > # 0x09, 0x06, // Usage (Keyboard) 419
> > # 0xa1, 0x01, // Collection (Application) 421
> > # 0x85, 0x05, // Report ID (5) 423
> > # 0x05, 0x07, // Usage Page (Keyboard) 425
> > # 0x19, 0xe0, // Usage Minimum (224) 427
> > # 0x29, 0xe7, // Usage Maximum (231) 429
> > # 0x15, 0x00, // Logical Minimum (0) 431
> > # 0x25, 0x01, // Logical Maximum (1) 433
> > # 0x75, 0x01, // Report Size (1) 435
> > # 0x95, 0x08, // Report Count (8) 437
> > # 0x81, 0x02, // Input (Data,Var,Abs) 439
> > # 0x95, 0x01, // Report Count (1) 441
> > # 0x75, 0x08, // Report Size (8) 443
> > # 0x81, 0x03, // Input (Cnst,Var,Abs) 445
> > # 0x95, 0x06, // Report Count (6) 447
> > # 0x75, 0x08, // Report Size (8) 449
> > # 0x15, 0x00, // Logical Minimum (0) 451
> > # 0x25, 0x65, // Logical Maximum (101) 453
> > # 0x05, 0x07, // Usage Page (Keyboard) 455
> > # 0x19, 0x00, // Usage Minimum (0) 457
> > # 0x29, 0x65, // Usage Maximum (101) 459
> > # 0x81, 0x00, // Input (Data,Arr,Abs) 461
> > # 0xc0, // End Collection 463
> > #
> > R: 464 05 01 09 05 a1 01 85 01 09 01 a1 00 09 30 09 31 15 00 27 ff ff
> > 00 00 95 02 75 10 81 02 c0 09 01 a1 00 09 32 09 35 15 00 27 ff ff 00
> > 00 95 02 75 10 81 02 c0 05 02 09 c5 15 00 26 ff 03 95 01 75 0a
> > 81 02 15 00 25 00 75 06 95 01 81 03 05 02 09 c4 15 00 26 ff 03 95 01
> > 75 0a 81 02 15 00 25 00 75 06 95 01 81 03 05 01 09 39 15 01 25 08 35
> > 00 46 3b 01 66 14 00 75 04 95 01 81 42 75 04 95 01 15 00 25 00
> > 35 00 45 00 65 00 81 03 05 09 19 01 29 0f 15 00 25 01 75 01 95 0f 81
> > 02 15 00 25 00 75 01 95 01 81 03 05 0c 0a b2 00 15 00 25 01 95 01 75
> > 01 81 02 15 00 25 00 75 07 95 01 81 03 05 0c 09 01 a1 01 0a 85
> > 00 15 00 26 ff 00 95 01 75 08 81 02 0a 99 00 15 00 26 ff 00 95 01 75
> > 04 81 02 15 00 25 00 95 01 75 04 81 03 0a 81 00 15 00 26 ff 00 95 01
> > 75 04 81 02 15 00 25 00 95 01 75 04 81 03 c0 05 0f 09 21 85 03
> > a1 02 09 97 15 00 25 01 75 04 95 01 91 02 15 00 25 00 75 04 95 01 91
> > 03 09 70 15 00 25 64 75 08 95 04 91 02 09 50 66 01 10 55 0e 15 00 26
> > ff 00 75 08 95 01 91 02 09 a7 15 00 26 ff 00 75 08 95 01 91 02
> > 65 00 55 00 09 7c 15 00 26 ff 00 75 08 95 01 91 02 c0 05 0c 09 01 85
> > 0c a1 01 0a 9e 00 15 00 26 ff 00 95 01 75 08 81 02 0a a1 00 15 00 26
> > ff 00 95 01 75 08 81 02 0a a2 00 15 00 26 ff 00 95 01 75 08 81
> > 02 0a a3 00 15 00 26 ff 00 95 01 75 08 81 02 c0 c0 05 01 09 06 a1 01
> > 85 05 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81
> > 03 95 06 75 08 15 00 25 65 05 07 19 00 29 65 81 00 c0
> > N: Xbox Wireless Controller
> > I: 5 045e 0b22
> >
> > On Wed, Jan 31, 2024 at 2:57 AM Benjamin Tissoires
> > <benjamin.tissoires@redhat.com> wrote:
> > >
> > > Hi,
> > >
> > > [Adding Siarhei who added support for those controllers in the kernel]
> > >
> > > On Wed, Jan 31, 2024 at 7:27 AM Taco Jerkface <tacodog311@gmail.com> wrote:
> > > >
> > > > Resending without HTML:
> > > >
> > > > Hi,
> > > >
> > > > I hope this is the correct contact for this report, I found you as the
> > > > maintainer in the hid-microsoft.c.
> > > >
> > > > I believe there is a bug in the microsoft bluetooth driver for the
> > > > Xbox Elite Series 2 controller. I have been experiencing issues with
> > > > it that I initially thought were SDL related. However the SDL team
> > > > seems to think this is driver related. My SDL bug report information
> > > > is here:
> > > >
> > > > https://github.com/libsdl-org/SDL/issues/8907
> > >
> > > Hard to say anything with that bug report because we don't know what
> > > those tools are supposed to do, and how they access the device (hidraw
> > > or evdev).
> > >
> > > Note that the bluetooth version is using uhid because it's a BLE controller.
> > > Basically when there is a BLE controller, bluez handles the transport
> > > layer from userspace, and injects the events through uhid so that it's
> > > handled as a normal kernel device.
> > >
> > > So there is no "uhid userspace driver", bluez just blindly forwards
> > > the events/reports/commands as it is told.
> > >
> > > >
> > > > Basically, SDL reads the controller correctly when connected by USB,
> > > > and if I run "controllermap" with root permission, but with user
> > > > permissions it misreads
> > >
> > > Using root or not shouldn't change the way your program sees the
> > > device: if you are capable of opening it, then you should get the same
> > > output.
> > >
> > > However, the immediate explanation that would come to my mind is that
> > > you are not using the "same" controller in both cases:
> > > - maybe that when you use it with root you are talking to the device
> > > through hidraw
> > > - maybe when you are not root you are talking to the device through evdev
> > >
> > > Again, not knowing the tools doesn't help me here :(
> > >
> > > > the number of buttons as 122, the first paddle
> > > > button on the back seems to act like the "screenshot" button from the
> > > > 1914 controller, and the other paddle buttons are not read. All
> > > > buttons read fine with evites, but the paddle buttons "KEY_UNKNOWN"
> > > >
> > > > type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
> > > >
> > > > Please let me know if there is a better contact for this, or if there
> > > > is anything I can do to help identify the problem.
> > > >
> > >
> > > Ideally I'd like Siarhei to answer here. But in the meantime, we could
> > > fetch some logs from the device itself which would allow me to better
> > > understand the issue:
> > > please use hid-recorder from hid-tools[1] to get the logs, and attach
> > > the whole output, with a recording of the events that are problematic:
> > > $> pip3 install hid-tools
> > > $> sudo hid-recorder
> > >
> > > Please dump 2 hid-recorder outputs, one with USB, and one with
> > > Bluetooth, with the same event sequence if possible so we can compare
> > > between the 2.
> > >
> > > Cheers,
> > > Benjamin
> > >
> > > [1] https://gitlab.freedesktop.org/libevdev/hid-tools
> > >
>
^ permalink raw reply
* Re: [PATCH v4 1/4] iio: hid-sensor-als: Assign channels dynamically
From: srinivas pandruvada @ 2024-02-05 13:54 UTC (permalink / raw)
To: Jonathan Cameron
Cc: jikos, lars, Basavaraj.Natikar, linux-input, linux-iio,
linux-kernel
In-Reply-To: <20240204155839.3dd1d639@jic23-huawei>
Hi Jontahan,
On Sun, 2024-02-04 at 15:58 +0000, Jonathan Cameron wrote:
> On Sun, 4 Feb 2024 05:03:29 -0800
> Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> wrote:
>
> > Instead of assuming that every channel defined statically by
> > als_channels[] is present, assign dynamically based on presence of
> > the
> > respective usage id in the descriptor. This will allow to register
> > ALS
> > with limited channel support. Append the timestamp as the last
> > channel.
> >
> > Update available_scan_mask to specify all channels which are
> > present.
> >
> > There is no intentional function changes done.
> >
> > Signed-off-by: Srinivas Pandruvada
> > <srinivas.pandruvada@linux.intel.com>
> Hi Srinivas,
>
> Logic looks fine, but not that global variable...
This will be a problem with multiple instances with different
combination. Although not seen in current devices, but this is
possible.
So will send an update.
Thanks,
Srinivas
>
> > ---
> > v4:
> > Addressed comments from Jonthan:
> > - Use available_scan_masks
> > - timestamp location is fixed and left gaps in sample data
> > for absent channels
> > - Use CHANNEL_SCAN_INDEX_MAX as limit to check presence of
> > usage ids, otherwise
> > it will miss newer channels added in subsequent patches.
> > v3:
> > Addressed comments from Jonthan:
> > - Remove channel allocation and move to iio_priv()
> > - Parse all usage IDs in a single loop and continue
> > for failure. This way the temperature and chromaticity
> > will not need any special processing to parse usage ids.
> > - Don't leave empty channel indexes
> >
> > v2:
> > New change
> >
> > drivers/iio/light/hid-sensor-als.c | 52 +++++++++++++++++++++-----
> > ----
> > 1 file changed, 36 insertions(+), 16 deletions(-)
> >
> > diff --git a/drivers/iio/light/hid-sensor-als.c
> > b/drivers/iio/light/hid-sensor-als.c
> > index b6c4bef2a7bb..d3b892c0e307 100644
> > --- a/drivers/iio/light/hid-sensor-als.c
> > +++ b/drivers/iio/light/hid-sensor-als.c
> > @@ -25,6 +25,7 @@ struct als_state {
> > struct hid_sensor_hub_callbacks callbacks;
> > struct hid_sensor_common common_attributes;
> > struct hid_sensor_hub_attribute_info
> > als[CHANNEL_SCAN_INDEX_MAX];
> > + struct iio_chan_spec channels[CHANNEL_SCAN_INDEX_MAX + 1];
> > struct {
> > u32 illum[CHANNEL_SCAN_INDEX_MAX];
> > u64 timestamp __aligned(8);
> > @@ -33,9 +34,16 @@ struct als_state {
> > int scale_post_decml;
> > int scale_precision;
> > int value_offset;
> > + int num_channels;
> > s64 timestamp;
> > };
> >
> > +/* The order of usage ids must match scan index starting from
> > CHANNEL_SCAN_INDEX_INTENSITY */
> > +static const u32 als_usage_ids[] = {
> > + HID_USAGE_SENSOR_LIGHT_ILLUM,
> > + HID_USAGE_SENSOR_LIGHT_ILLUM,
> > +};
> > +
> > static const u32 als_sensitivity_addresses[] = {
> > HID_USAGE_SENSOR_DATA_LIGHT,
> > HID_USAGE_SENSOR_LIGHT_ILLUM,
> > @@ -68,6 +76,8 @@ static const struct iio_chan_spec als_channels[]
> > = {
> > IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
> > };
> >
> > +static unsigned long als_scan_mask[] = {0, 0};
>
> Global? No. Could be multiple instances with different sensors
> supported.
> Needs to be embedded in the als_state structure so it is per
> instance.
>
> > +
> > /* Adjust channel real bits based on report descriptor */
> > static void als_adjust_channel_bit_mask(struct iio_chan_spec
> > *channels,
> > int channel, int size)
> > @@ -238,27 +248,38 @@ static int als_capture_sample(struct
> > hid_sensor_hub_device *hsdev,
> > /* Parse report which is specific to an usage id*/
> > static int als_parse_report(struct platform_device *pdev,
> > struct hid_sensor_hub_device
> > *hsdev,
> > - struct iio_chan_spec *channels,
> > unsigned usage_id,
> > struct als_state *st)
> > {
> > - int ret;
> > + struct iio_chan_spec *channels;
> > + int ret, index = 0;
> > int i;
> >
> > - for (i = 0; i <= CHANNEL_SCAN_INDEX_ILLUM; ++i) {
> > + channels = st->channels;
> > +
> > + for (i = 0; i < CHANNEL_SCAN_INDEX_MAX; ++i) {
> > ret = sensor_hub_input_get_attribute_info(hsdev,
> > HID_INPUT_REPORT,
> > usage_id,
> > -
> > HID_USAGE_SENSOR_LIGH
> > T_ILLUM,
> > + als_usage_ids[i],
> > &st->als[i]);
> > if (ret < 0)
> > - return ret;
> > - als_adjust_channel_bit_mask(channels, i, st-
> > >als[i].size);
> > + continue;
> > +
> > + channels[index] = als_channels[i];
> > + als_scan_mask[0] |= BIT(i);
> > + als_adjust_channel_bit_mask(channels, index, st-
> > >als[i].size);
> > + ++index;
> >
> > dev_dbg(&pdev->dev, "als %x:%x\n", st-
> > >als[i].index,
> > st->als[i].report_id);
> > }
> >
> > + st->num_channels = index;
> > + /* Return success even if one usage id is present */
> > + if (index)
> > + ret = 0;
> > +
> > st->scale_precision = hid_sensor_format_scale(usage_id,
> > &st-
> > >als[CHANNEL_SCAN_INDEX_INTENSITY],
> > &st->scale_pre_decml, &st-
> > >scale_post_decml);
> > @@ -294,15 +315,7 @@ static int hid_als_probe(struct
> > platform_device *pdev)
> > return ret;
> > }
> >
> > - indio_dev->channels = devm_kmemdup(&pdev->dev,
> > als_channels,
> > - sizeof(als_channels),
> > GFP_KERNEL);
> > - if (!indio_dev->channels) {
> > - dev_err(&pdev->dev, "failed to duplicate
> > channels\n");
> > - return -ENOMEM;
> > - }
> > -
> > ret = als_parse_report(pdev, hsdev,
> > - (struct iio_chan_spec *)indio_dev-
> > >channels,
> > hsdev->usage,
> > als_state);
> > if (ret) {
> > @@ -310,8 +323,15 @@ static int hid_als_probe(struct
> > platform_device *pdev)
> > return ret;
> > }
> >
> > - indio_dev->num_channels =
> > - ARRAY_SIZE(als_channels);
> > + /* Add timestamp channel */
> > + als_state->channels[als_state->num_channels] =
> > als_channels[CHANNEL_SCAN_INDEX_TIMESTAMP];
> > +
> > + /* +1 for adding timestamp channel */
> > + indio_dev->num_channels = als_state->num_channels + 1;
> > +
> > + indio_dev->channels = als_state->channels;
> > + indio_dev->available_scan_masks = als_scan_mask;
> > +
> > indio_dev->info = &als_info;
> > indio_dev->name = name;
> > indio_dev->modes = INDIO_DIRECT_MODE;
>
^ permalink raw reply
* [PATCH v10 2/3] HID: usbhid: Share USB device firmware node with child HID device
From: Danny Kaehn @ 2024-02-05 17:09 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, andriy.shevchenko, bentiss
Cc: jikos, bartosz.golaszewski, niyas.sait, dmitry.torokhov,
devicetree, linux-input, ethan.twardy, Danny Kaehn
In-Reply-To: <20240205170920.93499-1-danny.kaehn@plexus.com>
USB HID core now shares its fwnode with its child HID device.
Since there can only be one HID device on a USB interface, it is redundant
to specify a hid node under the USB device. This allows usb HID device
drivers to be described in firmware and make use of device properties.
Signed-off-by: Danny Kaehn <danny.kaehn@plexus.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/hid/usbhid/hid-core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index a90ed2ceae84..cb687ea7325c 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -19,6 +19,7 @@
#include <linux/list.h>
#include <linux/mm.h>
#include <linux/mutex.h>
+#include <linux/property.h>
#include <linux/spinlock.h>
#include <asm/unaligned.h>
#include <asm/byteorder.h>
@@ -1374,6 +1375,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id *
hid->hiddev_report_event = hiddev_report_event;
#endif
hid->dev.parent = &intf->dev;
+ device_set_node(&hid->dev, dev_fwnode(&intf->dev));
hid->bus = BUS_USB;
hid->vendor = le16_to_cpu(dev->descriptor.idVendor);
hid->product = le16_to_cpu(dev->descriptor.idProduct);
--
2.25.1
^ permalink raw reply related
* [PATCH v10 1/3] dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge
From: Danny Kaehn @ 2024-02-05 17:09 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, andriy.shevchenko, bentiss
Cc: jikos, bartosz.golaszewski, niyas.sait, dmitry.torokhov,
devicetree, linux-input, ethan.twardy, Danny Kaehn
In-Reply-To: <20240205170920.93499-1-danny.kaehn@plexus.com>
This is a USB HID device which includes an I2C controller and 8 GPIO pins.
The binding allows describing the chip's gpio and i2c controller in DT
using the subnodes named "gpio" and "i2c", respectively. This is
intended to be used in configurations where the CP2112 is permanently
connected in hardware.
Signed-off-by: Danny Kaehn <danny.kaehn@plexus.com>
---
Note -- Reviewed-By tags have been removed as suggested by Benjamin, since
1. It has been 6+ months since this binding was reviewed, and a lot can
change upstream in that time
2. There has been some contention between using named child nodes to
identify i2c and gpio nodes, and also making the driver implementing this
binding compatible with ACPI, since names aren't significant for ACPI
nodes, and ACPI names are always automatically uppercased. It has been
suggested that perhaps the DT binding should use child nodes with
addressable `reg` properties to identify the child nodes, instead of by
name [1].
Of course, I acknowledge that other firmware languages and kernel details
shouldn't impact DT bindings, but it also seems that there should
be some consistent way to specify sub-functions like this accross DT
and ACPI. Some additional commentary / requests for comment about the
seemingly missing glue here can be found in [2].
Any comments from Rob/Krzysztof/other DT folks would be greatly appreciated
[1] https://lore.kernel.org/all/ZBhoHzTr5l38u%2FkX@smile.fi.intel.com/
[2] https://lore.kernel.org/all/CAP+ZCCd0cD+q7=ngyEzScAte2VT9R00mqCQxB3K2TMbeg8UAfA@mail.gmail.com/
.../bindings/i2c/silabs,cp2112.yaml | 113 ++++++++++++++++++
1 file changed, 113 insertions(+)
create mode 100644 Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml
diff --git a/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml b/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml
new file mode 100644
index 000000000000..a27509627804
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml
@@ -0,0 +1,113 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/silabs,cp2112.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CP2112 HID USB to SMBus/I2C Bridge
+
+maintainers:
+ - Danny Kaehn <kaehndan@gmail.com>
+
+description:
+ The CP2112 is a USB HID device which includes an integrated I2C controller
+ and 8 GPIO pins. Its GPIO pins can each be configured as inputs, open-drain
+ outputs, or push-pull outputs.
+
+properties:
+ compatible:
+ const: usb10c4,ea90
+
+ reg:
+ maxItems: 1
+ description: The USB port number on the host controller
+
+ i2c:
+ description: The SMBus/I2C controller node for the CP2112
+ $ref: /schemas/i2c/i2c-controller.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ sda-gpios:
+ maxItems: 1
+
+ scl-gpios:
+ maxItems: 1
+
+ clock-frequency:
+ minimum: 10000
+ default: 100000
+ maximum: 400000
+
+ gpio:
+ description: The GPIO controller node for the CP2112
+ type: object
+ unevaluatedProperties: false
+
+ properties:
+ interrupt-controller: true
+ "#interrupt-cells":
+ const: 2
+
+ gpio-controller: true
+ "#gpio-cells":
+ const: 2
+
+ gpio-line-names:
+ minItems: 1
+ maxItems: 8
+
+ patternProperties:
+ "-hog(-[0-9]+)?$":
+ type: object
+
+ required:
+ - gpio-hog
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ usb {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ device@1 {
+ compatible = "usb10c4,ea90";
+ reg = <1>;
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ sda-gpios = <&cp2112_gpio 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ scl-gpios = <&cp2112_gpio 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+
+ temp@48 {
+ compatible = "national,lm75";
+ reg = <0x48>;
+ };
+ };
+
+ cp2112_gpio: gpio {
+ gpio-controller;
+ interrupt-controller;
+ #gpio-cells = <2>;
+ gpio-line-names = "CP2112_SDA", "CP2112_SCL", "TEST2",
+ "TEST3","TEST4", "TEST5", "TEST6";
+
+ fan-rst-hog {
+ gpio-hog;
+ gpios = <7 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "FAN_RST";
+ };
+ };
+ };
+ };
--
2.25.1
^ permalink raw reply related
* [PATCH v10 3/3] HID: cp2112: Fwnode Support
From: Danny Kaehn @ 2024-02-05 17:09 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, andriy.shevchenko, bentiss
Cc: jikos, bartosz.golaszewski, niyas.sait, dmitry.torokhov,
devicetree, linux-input, ethan.twardy, Danny Kaehn
In-Reply-To: <20240205170920.93499-1-danny.kaehn@plexus.com>
Support describing the CP2112's I2C and GPIO interfaces in firmware.
I2C and GPIO child nodes can either be children with names "i2c" and
"gpio", or, for ACPI, device nodes with _ADR Zero and One,
respectively.
Additionally, support configuring the I2C bus speed from the
clock-frequency device property.
Signed-off-by: Danny Kaehn <danny.kaehn@plexus.com>
---
Modeled this version based on Andy's email [1], but made the following
primary changes:
1. Use enum instead of #defines at Benjamin's request
2. Change if() else on checking name existence to allow a fwnode to
have a name that doesn't match to still be checked for its ACPI address
(since fwnode_get_name() _does_ still return a name for ACPI nodes)
3. Continue gracefully / silently if matching fwnodes fails
ACPI compatibility re-tested in QEMU as per conversations in v8.
NOTE: now that I'm not using device_get_named_child_node(), I am no longer
being left with a fwnode reference. I am not entirely sure if I
_need_ one for how I am using the handles, so I have left out the calls
to fwnode_handle_get() and fwnode_hand_put() for now. Plese correct me if
this is a situation where a reference should be held until the driver
is removed. Note that this has been present since v9, but I intended to
include this comment on that patch.
[1] https://lore.kernel.org/all/ZBhYXwjPeRiZwxMT@smile.fi.intel.com/
drivers/hid/hid-cp2112.c | 50 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c
index 20a0d1315d90..2ec0e5b95845 100644
--- a/drivers/hid/hid-cp2112.c
+++ b/drivers/hid/hid-cp2112.c
@@ -27,6 +27,25 @@
#include <linux/usb/ch9.h>
#include "hid-ids.h"
+/**
+ * enum cp2112_child_acpi_cell_addrs - Child ACPI addresses for CP2112 sub-functions
+ * @CP2112_I2C_ADR: Address for I2C node
+ * @CP2112_GPIO_ADR: Address for GPIO node
+ */
+enum cp2112_child_acpi_cell_addrs {
+ CP2112_I2C_ADR = 0,
+ CP2112_GPIO_ADR = 1,
+};
+
+/**
+ * CP2112 Fwnode child names.
+ * CP2112 sub-functions can be described by named fwnode children or by ACPI _ADR
+ */
+static const char * const cp2112_cell_names[] = {
+ [CP2112_I2C_ADR] = "i2c",
+ [CP2112_GPIO_ADR] = "gpio",
+};
+
#define CP2112_REPORT_MAX_LENGTH 64
#define CP2112_GPIO_CONFIG_LENGTH 5
#define CP2112_GPIO_GET_LENGTH 2
@@ -1195,7 +1214,11 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
struct cp2112_device *dev;
u8 buf[3];
struct cp2112_smbus_config_report config;
+ struct fwnode_handle *child;
struct gpio_irq_chip *girq;
+ struct i2c_timings timings;
+ const char *name;
+ u32 addr;
int ret;
dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL);
@@ -1209,6 +1232,30 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
mutex_init(&dev->lock);
+ device_for_each_child_node(&hdev->dev, child) {
+ name = fwnode_get_name(child);
+ if (name) {
+ ret = match_string(cp2112_cell_names,
+ ARRAY_SIZE(cp2112_cell_names), name);
+ if (ret >= 0)
+ addr = ret;
+ }
+ if (!name || ret < 0)
+ ret = acpi_get_local_address(ACPI_HANDLE_FWNODE(child), &addr);
+
+ if (ret < 0)
+ continue;
+
+ switch (addr) {
+ case CP2112_I2C_ADR:
+ device_set_node(&dev->adap.dev, child);
+ break;
+ case CP2112_GPIO_ADR:
+ dev->gc.fwnode = child;
+ break;
+ }
+ }
+
ret = hid_parse(hdev);
if (ret) {
hid_err(hdev, "parse failed\n");
@@ -1254,6 +1301,9 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
goto err_power_normal;
}
+ i2c_parse_fw_timings(&dev->adap.dev, &timings, true);
+
+ config.clock_speed = cpu_to_be32(timings.bus_freq_hz);
config.retry_time = cpu_to_be16(1);
ret = cp2112_hid_output(hdev, (u8 *)&config, sizeof(config),
--
2.25.1
^ permalink raw reply related
* [PATCH v10 0/3] Firmware Support for USB-HID Devices and CP2112
From: Danny Kaehn @ 2024-02-05 17:09 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, andriy.shevchenko, bentiss
Cc: jikos, bartosz.golaszewski, niyas.sait, dmitry.torokhov,
devicetree, linux-input, ethan.twardy, Danny Kaehn
This patchset allows USB-HID devices to have Firmware bindings through sharing
the USB fwnode with the HID driver, and adds such a binding and driver
implementation for the CP2112 USB to SMBus Bridge (which necessitated the
USB-HID change). This change allows a CP2112 permanently attached in hardware to
be described in DT and ACPI and interoperate with other drivers.
Changes in v10:
- Define an enumeration and mapping for CP2112 ACPI _ADRs and devicetree
child node names, and use these in the scanning of child nodes
- Address other miscellaneous
Changes in v9:
- Add _ADR-based ACPI binding of child nodes (I2C is _ADR Zero, GPIO is _ADR One)
- Use a loop-based approach for assigning child nodes within probe().
As a consequence, hid-cp2112.c no longer maintains references to the
child fwnodes during the lifetime of the device. (plese correct if this
is actually needed for this use-case)
Changes in v8:
- Apply Review tags retroactively to patches previously reviewed
Changes in v7:
- Use dev_fwnode when calling fwnod_handle_put in i2c_adapter in hid-cp2112.c
- Capitalize I2C and GPIO in commit message for patch 0003
Changes in v6:
- Fix fwnode_handle reference leaks in hid-cp21112.c
- Simplify hog node pattern in silabs,cp2112.yaml
Changes in v5:
- Use fwnode API instead of of_node api in hid-core.c and hid-cp2112.c
- Include sda-gpios and scl-gpios in silabs,cp2112.yaml
- Additional fixups to silabs,cp2112.yaml to address comments
- Submit threaded interrupt bugfix separately from this patchset, as requested
Changes in v4:
- Moved silabs,cp2112.yaml to /Documentation/devicetree/bindings/i2c
Changes in v3:
- Additional fixups to silabs,cp2112.yaml to address comments
Changes in v2:
- Added more detail to silabs,cp2112.yaml dt-binding
- Moved silabs,cp2112.yaml to /Documentation/devicetree/bindings/input
- Added support for setting smbus clock-frequency from DT in hid-cp2112.c
- Added freeing of of_nodes on error paths of _probe in hid-cp2112.c
Danny Kaehn (3):
dt-bindings: i2c: Add CP2112 HID USB to SMBus Bridge
HID: usbhid: Share USB device firmware node with child HID device
HID: cp2112: Fwnode Support
.../bindings/i2c/silabs,cp2112.yaml | 113 ++++++++++++++++++
drivers/hid/hid-cp2112.c | 50 ++++++++
drivers/hid/usbhid/hid-core.c | 2 +
3 files changed, 165 insertions(+)
create mode 100644 Documentation/devicetree/bindings/i2c/silabs,cp2112.yaml
--
2.25.1
^ permalink raw reply
* Re: [PATCH bpf-next v4 0/3] Annotate kfuncs in .BTF_ids section
From: Viktor Malik @ 2024-02-05 18:43 UTC (permalink / raw)
To: Manu Bretelle, Jiri Olsa
Cc: Daniel Xu, linux-trace-kernel, coreteam, bpf, linux-input,
cgroups, netdev, linux-stm32, linux-kselftest, linux-doc,
fsverity, linux-kernel, linux-arm-kernel, netfilter-devel,
alexei.starovoitov, quentin, alan.maguire, memxor
In-Reply-To: <Zb6Jt30bNcNhM6zR@surya>
On 2/3/24 19:45, Manu Bretelle wrote:
> On Sat, Feb 03, 2024 at 03:40:24PM +0100, Jiri Olsa wrote:
>> On Fri, Feb 02, 2024 at 03:09:05PM -0800, Manu Bretelle wrote:
>>> On Sun, Jan 28, 2024 at 06:24:05PM -0700, Daniel Xu wrote:
>>>> === Description ===
>>>>
>>>> This is a bpf-treewide change that annotates all kfuncs as such inside
>>>> .BTF_ids. This annotation eventually allows us to automatically generate
>>>> kfunc prototypes from bpftool.
>>>>
>>>> We store this metadata inside a yet-unused flags field inside struct
>>>> btf_id_set8 (thanks Kumar!). pahole will be taught where to look.
>>>>
>>>> More details about the full chain of events are available in commit 3's
>>>> description.
>>>>
>>>> The accompanying pahole and bpftool changes can be viewed
>>>> here on these "frozen" branches [0][1].
>>>>
>>>> [0]: https://github.com/danobi/pahole/tree/kfunc_btf-v3-mailed
>>>> [1]: https://github.com/danobi/linux/tree/kfunc_bpftool-mailed
>>>
>>>
>>> I hit a similar issue to [0] on master
>>> 943b043aeecc ("selftests/bpf: Fix bench runner SIGSEGV")
>>> when cross-compiling on x86_64 (LE) to s390x (BE).
>>> I do have CONFIG_DEBUG_INFO_BTF enable and the issue would not trigger if
>>> I disabled CONFIG_DEBUG_INFO_BTF (and with the fix mentioned in [0]).
>>>
>>> What seems to happen is that `tools/resolve_btfids` is ran in the context of the
>>> host endianess and if I printk before the WARN_ON:
>>> diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
>>> index ef380e546952..a9ed7a1a4936 100644
>>> --- a/kernel/bpf/btf.c
>>> +++ b/kernel/bpf/btf.c
>>> @@ -8128,6 +8128,7 @@ int register_btf_kfunc_id_set(enum bpf_prog_type prog_type,
>>> * WARN() for initcall registrations that do not check errors.
>>> */
>>> if (!(kset->set->flags & BTF_SET8_KFUNCS)) {
>>> + printk("Flag 0x%08X, expected 0x%08X\n", kset->set->flags, BTF_SET8_KFUNCS);
>>> WARN_ON(!kset->owner);
>>> return -EINVAL;
>>> }
>>>
>>> the boot logs would show:
>>> Flag 0x01000000, expected 0x00000001
>>>
>>> The issue did not happen prior to
>>> 6f3189f38a3e ("bpf: treewide: Annotate BPF kfuncs in BTF")
>>> has only 0 was written before.
>>>
>>> It seems [1] will be addressing cross-compilation, but it did not fix it as is
>>> by just applying on top of master, so probably some of the changes will also need
>>> to be ported to `tools/include/linux/btf_ids.h`?
>>
>> the fix in [1] is fixing flags in set8's pairs, but not the global flags
>>
>> it looks like Viktor's fix should now also swap that as well? like in the
>> change below on top of Viktor's changes (untested)
>>
>> jirka
>>
>>
>> ---
>> diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c
>> index d01603ef6283..c44d57fec390 100644
>> --- a/tools/bpf/resolve_btfids/main.c
>> +++ b/tools/bpf/resolve_btfids/main.c
>> @@ -706,6 +706,8 @@ static int sets_patch(struct object *obj)
>> * correctly translate everything.
>> */
>> if (need_bswap) {
>> + set8->flags = bswap_32(set8->flags);
>> +
>> for (i = 0; i < cnt; i++) {
>> set8->pairs[i].flags =
>> bswap_32(set8->pairs[i].flags);
>>
>
> That should work. Here are a few tests I ran:
>
> $ md5sum /tmp/kbuild-s390x/vmlinux.*
> eb658e51e089f3c5b2c8909a29dc9997 /tmp/kbuild-s390x/vmlinux.a
> # plain vmlinux before running resolv_btfids (all 0s)
> ea907cd46a1a73b8276b5f2a82af00ca /tmp/kbuild-s390x/vmlinux.before_resolv
> # x86_64 resolv_btfids on master without Viktor's patch
> 980a40c3a3ff563d1c2d1ebdd5071a23 /tmp/kbuild-s390x/vmlinux.resolv_native
> # x86_64 resolv_btfids on master with Viktor's patch
> b986d19e242719ebea41c578235da662 /tmp/kbuild-s390x/vmlinux.resolv_native_patch_viktor
> # x86_64 resolv_btfids on master with Viktor's patch and your suggested patch
> 4edd8752ff01129945bd442689b1927b /tmp/kbuild-s390x/vmlinux.resolv_native_patch_viktor_patched
> # s390x resolv_btfids run with qemu-s390x-static
> 4edd8752ff01129945bd442689b1927b /tmp/kbuild-s390x/vmlinux.resolv_s390x
>
>
> and some hexdiff of those binaries:
>
>
> # difference between master's native build and s390x build.... has byte swapping for set8 and others
> diff -ruN <(xxd /tmp/kbuild-s390x/vmlinux.resolv_s390x) <(xxd /tmp/kbuild-s390x/vmlinux.resolv_native) > diff_s390x_native.diff
> https://gist.github.com/chantra/c3d58637a08a6f7340953dc155bb18cc
>
> # difference betwee Viktor's version and s390x build.... squinting my eyes I only see the global set8 is missing
> diff -ruN <(xxd /tmp/kbuild-s390x/vmlinux.resolv_s390x) <(xxd /tmp/kbuild-s390x/vmlinux.resolv_native_patch_viktor) > diff_s390x_native_viktor.diff
> https://gist.github.com/chantra/61cfff02b456ae72d3c0161ce1897097
Thanks for the testing Manu!
Jiri's suggested fix is now a part of [1].
Viktor
[1] https://lore.kernel.org/bpf/cover.1707157553.git.vmalik@redhat.com/
>
> Have a good weekend all!
>
> Manu
>
^ permalink raw reply
* [PATCH v5 0/4] Add support of color temperature and chromaticity
From: Srinivas Pandruvada @ 2024-02-05 18:59 UTC (permalink / raw)
To: jikos, jic23, lars, Basavaraj.Natikar
Cc: linux-input, linux-iio, linux-kernel, Srinivas Pandruvada
The original series submitted to 6.7 (before revert) is modified to
solve regression issues on several platforms. There are two changes
introduced before adding support for new features to allow dynamic
addition of channels.
v5:
Change als_scan_mask to per state instead of global
v4:
Addressed comments from Jonathan and Basavaraj
v3:
Addressed comments for v2, details in each patch.
v2:
New change to add channels dynamically
Modified color temperature and chromaticity to skip in case
of failures
Basavaraj Natikar (2):
iio: hid-sensor-als: Add light color temperature support
iio: hid-sensor-als: Add light chromaticity support
Srinivas Pandruvada (2):
iio: hid-sensor-als: Assign channels dynamically
iio: hid-sensor-als: Remove hardcoding of values for enums
drivers/iio/light/hid-sensor-als.c | 122 ++++++++++++++++++++++++-----
include/linux/hid-sensor-ids.h | 4 +
2 files changed, 108 insertions(+), 18 deletions(-)
--
2.43.0
^ permalink raw reply
* [PATCH v5 1/4] iio: hid-sensor-als: Assign channels dynamically
From: Srinivas Pandruvada @ 2024-02-05 18:59 UTC (permalink / raw)
To: jikos, jic23, lars, Basavaraj.Natikar
Cc: linux-input, linux-iio, linux-kernel, Srinivas Pandruvada
In-Reply-To: <20240205185926.3030521-1-srinivas.pandruvada@linux.intel.com>
Instead of assuming that every channel defined statically by
als_channels[] is present, assign dynamically based on presence of the
respective usage id in the descriptor. This will allow to register ALS
with limited channel support. Append the timestamp as the last channel.
Update available_scan_mask to specify all channels which are present.
There is no intentional function changes done.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
v5:
- Move als_scan_mask to struct als_state
v4:
Addressed comments from Jonthan:
- Use available_scan_masks
- timestamp location is fixed and left gaps in sample data for absent channels
- Use CHANNEL_SCAN_INDEX_MAX as limit to check presence of usage ids, otherwise
it will miss newer channels added in subsequent patches.
v3:
Addressed comments from Jonthan:
- Remove channel allocation and move to iio_priv()
- Parse all usage IDs in a single loop and continue
for failure. This way the temperature and chromaticity
will not need any special processing to parse usage ids.
- Don't leave empty channel indexes
v2:
New change
drivers/iio/light/hid-sensor-als.c | 51 ++++++++++++++++++++----------
1 file changed, 35 insertions(+), 16 deletions(-)
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index b6c4bef2a7bb..ed5c42aa7cca 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -25,6 +25,7 @@ struct als_state {
struct hid_sensor_hub_callbacks callbacks;
struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info als[CHANNEL_SCAN_INDEX_MAX];
+ struct iio_chan_spec channels[CHANNEL_SCAN_INDEX_MAX + 1];
struct {
u32 illum[CHANNEL_SCAN_INDEX_MAX];
u64 timestamp __aligned(8);
@@ -33,7 +34,15 @@ struct als_state {
int scale_post_decml;
int scale_precision;
int value_offset;
+ int num_channels;
s64 timestamp;
+ unsigned long als_scan_mask[2];
+};
+
+/* The order of usage ids must match scan index starting from CHANNEL_SCAN_INDEX_INTENSITY */
+static const u32 als_usage_ids[] = {
+ HID_USAGE_SENSOR_LIGHT_ILLUM,
+ HID_USAGE_SENSOR_LIGHT_ILLUM,
};
static const u32 als_sensitivity_addresses[] = {
@@ -238,27 +247,38 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
/* Parse report which is specific to an usage id*/
static int als_parse_report(struct platform_device *pdev,
struct hid_sensor_hub_device *hsdev,
- struct iio_chan_spec *channels,
unsigned usage_id,
struct als_state *st)
{
- int ret;
+ struct iio_chan_spec *channels;
+ int ret, index = 0;
int i;
- for (i = 0; i <= CHANNEL_SCAN_INDEX_ILLUM; ++i) {
+ channels = st->channels;
+
+ for (i = 0; i < CHANNEL_SCAN_INDEX_MAX; ++i) {
ret = sensor_hub_input_get_attribute_info(hsdev,
HID_INPUT_REPORT,
usage_id,
- HID_USAGE_SENSOR_LIGHT_ILLUM,
+ als_usage_ids[i],
&st->als[i]);
if (ret < 0)
- return ret;
- als_adjust_channel_bit_mask(channels, i, st->als[i].size);
+ continue;
+
+ channels[index] = als_channels[i];
+ st->als_scan_mask[0] |= BIT(i);
+ als_adjust_channel_bit_mask(channels, index, st->als[i].size);
+ ++index;
dev_dbg(&pdev->dev, "als %x:%x\n", st->als[i].index,
st->als[i].report_id);
}
+ st->num_channels = index;
+ /* Return success even if one usage id is present */
+ if (index)
+ ret = 0;
+
st->scale_precision = hid_sensor_format_scale(usage_id,
&st->als[CHANNEL_SCAN_INDEX_INTENSITY],
&st->scale_pre_decml, &st->scale_post_decml);
@@ -294,15 +314,7 @@ static int hid_als_probe(struct platform_device *pdev)
return ret;
}
- indio_dev->channels = devm_kmemdup(&pdev->dev, als_channels,
- sizeof(als_channels), GFP_KERNEL);
- if (!indio_dev->channels) {
- dev_err(&pdev->dev, "failed to duplicate channels\n");
- return -ENOMEM;
- }
-
ret = als_parse_report(pdev, hsdev,
- (struct iio_chan_spec *)indio_dev->channels,
hsdev->usage,
als_state);
if (ret) {
@@ -310,8 +322,15 @@ static int hid_als_probe(struct platform_device *pdev)
return ret;
}
- indio_dev->num_channels =
- ARRAY_SIZE(als_channels);
+ /* Add timestamp channel */
+ als_state->channels[als_state->num_channels] = als_channels[CHANNEL_SCAN_INDEX_TIMESTAMP];
+
+ /* +1 for adding timestamp channel */
+ indio_dev->num_channels = als_state->num_channels + 1;
+
+ indio_dev->channels = als_state->channels;
+ indio_dev->available_scan_masks = als_state->als_scan_mask;
+
indio_dev->info = &als_info;
indio_dev->name = name;
indio_dev->modes = INDIO_DIRECT_MODE;
--
2.43.0
^ permalink raw reply related
* [PATCH v5 2/4] iio: hid-sensor-als: Remove hardcoding of values for enums
From: Srinivas Pandruvada @ 2024-02-05 18:59 UTC (permalink / raw)
To: jikos, jic23, lars, Basavaraj.Natikar
Cc: linux-input, linux-iio, linux-kernel, Srinivas Pandruvada
In-Reply-To: <20240205185926.3030521-1-srinivas.pandruvada@linux.intel.com>
Remove hardcoding of values for enum CHANNEL_SCAN_INDEX_INTENSITY and
CHANNEL_SCAN_INDEX_ILLUM.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
v5:
No change
v4:
NO change
v3:
New patch. Added as the next patch removed the hardcoding of enum values
when submitted. To remove unrelated changes, created a patch to just
remove hardcoding of values.
drivers/iio/light/hid-sensor-als.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index ed5c42aa7cca..144c02fbbbc0 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -14,8 +14,8 @@
#include "../common/hid-sensors/hid-sensor-trigger.h"
enum {
- CHANNEL_SCAN_INDEX_INTENSITY = 0,
- CHANNEL_SCAN_INDEX_ILLUM = 1,
+ CHANNEL_SCAN_INDEX_INTENSITY,
+ CHANNEL_SCAN_INDEX_ILLUM,
CHANNEL_SCAN_INDEX_MAX
};
--
2.43.0
^ permalink raw reply related
* [PATCH v5 3/4] iio: hid-sensor-als: Add light color temperature support
From: Srinivas Pandruvada @ 2024-02-05 18:59 UTC (permalink / raw)
To: jikos, jic23, lars, Basavaraj.Natikar
Cc: linux-input, linux-iio, linux-kernel, Srinivas Pandruvada
In-Reply-To: <20240205185926.3030521-1-srinivas.pandruvada@linux.intel.com>
From: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
On some platforms, ambient color sensors also support light color
temperature. Add support of light color temperature.
Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
v5:
No change
v4:
- Index is fixed for each channel instead of packing for absent channels
v3:
Simplilified as no special processing is required in als_parse_report()
v2:
Original patch from Basavaraj Natikar <Basavaraj.Natikar@amd.com> is
modified to prevent failure when the new usage id is not found in the
descriptor.
drivers/iio/light/hid-sensor-als.c | 21 +++++++++++++++++++++
include/linux/hid-sensor-ids.h | 1 +
2 files changed, 22 insertions(+)
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index 144c02fbbbc0..c17902823629 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -16,6 +16,7 @@
enum {
CHANNEL_SCAN_INDEX_INTENSITY,
CHANNEL_SCAN_INDEX_ILLUM,
+ CHANNEL_SCAN_INDEX_COLOR_TEMP,
CHANNEL_SCAN_INDEX_MAX
};
@@ -43,6 +44,7 @@ struct als_state {
static const u32 als_usage_ids[] = {
HID_USAGE_SENSOR_LIGHT_ILLUM,
HID_USAGE_SENSOR_LIGHT_ILLUM,
+ HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE,
};
static const u32 als_sensitivity_addresses[] = {
@@ -74,6 +76,16 @@ static const struct iio_chan_spec als_channels[] = {
BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
.scan_index = CHANNEL_SCAN_INDEX_ILLUM,
},
+ {
+ .type = IIO_COLORTEMP,
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+ BIT(IIO_CHAN_INFO_SCALE) |
+ BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
+ .scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP,
+ },
IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
};
@@ -112,6 +124,11 @@ static int als_read_raw(struct iio_dev *indio_dev,
min = als_state->als[chan->scan_index].logical_minimum;
address = HID_USAGE_SENSOR_LIGHT_ILLUM;
break;
+ case CHANNEL_SCAN_INDEX_COLOR_TEMP:
+ report_id = als_state->als[chan->scan_index].report_id;
+ min = als_state->als[chan->scan_index].logical_minimum;
+ address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE;
+ break;
default:
report_id = -1;
break;
@@ -232,6 +249,10 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
als_state->scan.illum[CHANNEL_SCAN_INDEX_ILLUM] = sample_data;
ret = 0;
break;
+ case HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE:
+ als_state->scan.illum[CHANNEL_SCAN_INDEX_COLOR_TEMP] = sample_data;
+ ret = 0;
+ break;
case HID_USAGE_SENSOR_TIME_TIMESTAMP:
als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes,
*(s64 *)raw_data);
diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h
index 13b1e65fbdcc..8af4fb3e0254 100644
--- a/include/linux/hid-sensor-ids.h
+++ b/include/linux/hid-sensor-ids.h
@@ -21,6 +21,7 @@
#define HID_USAGE_SENSOR_ALS 0x200041
#define HID_USAGE_SENSOR_DATA_LIGHT 0x2004d0
#define HID_USAGE_SENSOR_LIGHT_ILLUM 0x2004d1
+#define HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE 0x2004d2
/* PROX (200011) */
#define HID_USAGE_SENSOR_PROX 0x200011
--
2.43.0
^ permalink raw reply related
* [PATCH v5 4/4] iio: hid-sensor-als: Add light chromaticity support
From: Srinivas Pandruvada @ 2024-02-05 18:59 UTC (permalink / raw)
To: jikos, jic23, lars, Basavaraj.Natikar
Cc: linux-input, linux-iio, linux-kernel, Srinivas Pandruvada
In-Reply-To: <20240205185926.3030521-1-srinivas.pandruvada@linux.intel.com>
From: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
On some platforms, ambient color sensors also support the x and y light
colors, which represent the coordinates on the CIE 1931 chromaticity
diagram. Add light chromaticity x and y.
Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
v5:
No change
v4:
- Index is fixed for each channel instead of packing for absent channels
v3:
Simplilified as no special processing is required in als_parse_report()
v2:
Original patch from Basavaraj Natikar <Basavaraj.Natikar@amd.com> is
modified to prevent failure when the new usage id is not found in the
descriptor.
drivers/iio/light/hid-sensor-als.c | 46 ++++++++++++++++++++++++++++++
include/linux/hid-sensor-ids.h | 3 ++
2 files changed, 49 insertions(+)
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index c17902823629..260281194f61 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -17,6 +17,8 @@ enum {
CHANNEL_SCAN_INDEX_INTENSITY,
CHANNEL_SCAN_INDEX_ILLUM,
CHANNEL_SCAN_INDEX_COLOR_TEMP,
+ CHANNEL_SCAN_INDEX_CHROMATICITY_X,
+ CHANNEL_SCAN_INDEX_CHROMATICITY_Y,
CHANNEL_SCAN_INDEX_MAX
};
@@ -45,6 +47,8 @@ static const u32 als_usage_ids[] = {
HID_USAGE_SENSOR_LIGHT_ILLUM,
HID_USAGE_SENSOR_LIGHT_ILLUM,
HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE,
+ HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X,
+ HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y,
};
static const u32 als_sensitivity_addresses[] = {
@@ -86,6 +90,30 @@ static const struct iio_chan_spec als_channels[] = {
BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
.scan_index = CHANNEL_SCAN_INDEX_COLOR_TEMP,
},
+ {
+ .type = IIO_CHROMATICITY,
+ .modified = 1,
+ .channel2 = IIO_MOD_X,
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+ BIT(IIO_CHAN_INFO_SCALE) |
+ BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
+ .scan_index = CHANNEL_SCAN_INDEX_CHROMATICITY_X,
+ },
+ {
+ .type = IIO_CHROMATICITY,
+ .modified = 1,
+ .channel2 = IIO_MOD_Y,
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |
+ BIT(IIO_CHAN_INFO_SCALE) |
+ BIT(IIO_CHAN_INFO_SAMP_FREQ) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS) |
+ BIT(IIO_CHAN_INFO_HYSTERESIS_RELATIVE),
+ .scan_index = CHANNEL_SCAN_INDEX_CHROMATICITY_Y,
+ },
IIO_CHAN_SOFT_TIMESTAMP(CHANNEL_SCAN_INDEX_TIMESTAMP)
};
@@ -129,6 +157,16 @@ static int als_read_raw(struct iio_dev *indio_dev,
min = als_state->als[chan->scan_index].logical_minimum;
address = HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE;
break;
+ case CHANNEL_SCAN_INDEX_CHROMATICITY_X:
+ report_id = als_state->als[chan->scan_index].report_id;
+ min = als_state->als[chan->scan_index].logical_minimum;
+ address = HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X;
+ break;
+ case CHANNEL_SCAN_INDEX_CHROMATICITY_Y:
+ report_id = als_state->als[chan->scan_index].report_id;
+ min = als_state->als[chan->scan_index].logical_minimum;
+ address = HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y;
+ break;
default:
report_id = -1;
break;
@@ -253,6 +291,14 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,
als_state->scan.illum[CHANNEL_SCAN_INDEX_COLOR_TEMP] = sample_data;
ret = 0;
break;
+ case HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X:
+ als_state->scan.illum[CHANNEL_SCAN_INDEX_CHROMATICITY_X] = sample_data;
+ ret = 0;
+ break;
+ case HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y:
+ als_state->scan.illum[CHANNEL_SCAN_INDEX_CHROMATICITY_Y] = sample_data;
+ ret = 0;
+ break;
case HID_USAGE_SENSOR_TIME_TIMESTAMP:
als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes,
*(s64 *)raw_data);
diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h
index 8af4fb3e0254..6730ee900ee1 100644
--- a/include/linux/hid-sensor-ids.h
+++ b/include/linux/hid-sensor-ids.h
@@ -22,6 +22,9 @@
#define HID_USAGE_SENSOR_DATA_LIGHT 0x2004d0
#define HID_USAGE_SENSOR_LIGHT_ILLUM 0x2004d1
#define HID_USAGE_SENSOR_LIGHT_COLOR_TEMPERATURE 0x2004d2
+#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY 0x2004d3
+#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY_X 0x2004d4
+#define HID_USAGE_SENSOR_LIGHT_CHROMATICITY_Y 0x2004d5
/* PROX (200011) */
#define HID_USAGE_SENSOR_PROX 0x200011
--
2.43.0
^ permalink raw reply related
* Re: [PATCH] input: gameport: make gameport_bus const
From: Greg Kroah-Hartman @ 2024-02-05 12:49 UTC (permalink / raw)
To: Ricardo B. Marliere; +Cc: Dmitry Torokhov, linux-input, linux-kernel
In-Reply-To: <20240204-bus_cleanup-input-v1-1-74c2438801cf@marliere.net>
On Sun, Feb 04, 2024 at 04:56:34PM -0300, Ricardo B. Marliere wrote:
> Now that the driver core can properly handle constant struct bus_type,
> move the gameport_bus variable to be a constant structure as well,
> placing it into read-only memory which can not be modified at runtime.
>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Ricardo B. Marliere <ricardo@marliere.net>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
^ permalink raw reply
* [PATCH][next] input: ti_am335x_tsc: remove redundant assignment to variable config
From: Colin Ian King @ 2024-02-05 21:59 UTC (permalink / raw)
To: Dmitry Torokhov, linux-input; +Cc: kernel-janitors, linux-kernel
The variable config is being initialized with a value that is never
read, it is being re-assigned in the next statement. The initialization
is redundant and can be removed.
Cleans up clang scan build warning:
drivers/input/touchscreen/ti_am335x_tsc.c:160:2: warning: Value stored
to 'config' is never read [deadcode.DeadStores]
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
---
drivers/input/touchscreen/ti_am335x_tsc.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
index 34324f8512ac..294b7ceded27 100644
--- a/drivers/input/touchscreen/ti_am335x_tsc.c
+++ b/drivers/input/touchscreen/ti_am335x_tsc.c
@@ -157,7 +157,6 @@ static void titsc_step_config(struct titsc *ts_dev)
n++ == 0 ? STEPCONFIG_OPENDLY : 0);
}
- config = 0;
config = STEPCONFIG_MODE_HWSYNC |
STEPCONFIG_AVG_16 | ts_dev->bit_yn |
STEPCONFIG_INM_ADCREFM;
--
2.39.2
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox