diff mbox series

CHROMIUM: i2c: Add device property for probing

Message ID 20211220210643.47842-1-pmenzel@molgen.mpg.de
State Changes Requested, archived
Headers show
Series CHROMIUM: i2c: Add device property for probing | expand

Checks

Context Check Description
robh/checkpatch warning total: 2 errors, 4 warnings, 48 lines checked
robh/dtbs-check success
robh/dt-meta-schema success

Commit Message

Paul Menzel Dec. 20, 2021, 9:06 p.m. UTC
From: Furquan Shaikh <furquan@google.com>

Dear Linux folks,


Google Chromebooks are often built with devices sourced from different
vendors. These need to be probed. To deal with this, the firmware – in
this case coreboot – tags such optional devices accordingly – I think
this is commit fbf2c79b (drivers/i2c/generic: Add config for marking
device as probed) – and Chromium OS’ Linux kernel has the patch at hand
applied to act accordingly. Right after the merge, Dmitry created a
revert, which was actively discussed for two days but wasn’t applied.
That means, millions of devices shipped with such a firmware and Linux
kernel. To support these devices with upstream Linux kernel, is there an
alternative to applying the patch to the Linux kernel, and to support
the shipped devices?


Kind regards,

Paul


[1]: https://review.coreboot.org/c/coreboot/+/16742/
[2]: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1104997

--------------- 8< -------------------------- >8 ---------------

Add a new device property to indicate if an I2C device should be
probed before being added.  If this property is present and set
then the I2C core layer will use i2c_new_probed_device() instead
of i2c_new_device().

This can be used to provide devices in ACPI or DT that may not be
present on the board.  For example, multiple trackpad vendors can
be supported on a single board with a unified firmware image this
way by having their device address be probed before being added.

This property is styled after the PCI Host Bridge probe property
(bindings/pci/host-generic-pci.txt:linuxk,pci-probe-only) and is
a linux specific directive to alter device probing.

BUG=b:110013532
TEST=tested on soraka with 4.14 kernel:
1) add "linux,probed=1" device property to the touchscreen ACPI device
on soraka and ensure that the device is probed before being added.

tested on yorp with 4.14 kernel:
1) I2C devices without the "linux,probed=1" device property are still
functional.

Original-change-Id: I9cf689f7b75ef445c1f0e9f7ec143fa695eb398e
Original-signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Original-reviewed-on: https://chromium-review.googlesource.com/388767
Original-reviewed-by: Benson Leung <bleung@chromium.org>

Change-Id: I54015fe102f2834f6a094d9e650c166a0cc0583b
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1100544
Commit-Ready: Furquan Shaikh <furquan@chromium.org>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Justin TerAvest <teravest@chromium.org>

Conflicts:
	drivers/i2c/i2c-core-of.c

[rebase419(groeck): Context conflicts]
Signed-off-by: Guenter Roeck <groeck@chromium.org>
[rebase510(groeck): Context conflicts]
Signed-off-by: Guenter Roeck <groeck@chromium.org>
Change-Id: Id10adae00b381e62813fd6b8ce7c6c50f140c31b
---
 Documentation/devicetree/bindings/i2c/i2c.txt |  5 +++++
 drivers/i2c/i2c-core-acpi.c                   | 12 +++++++++++-
 drivers/i2c/i2c-core-of.c                     | 10 +++++++++-
 3 files changed, 25 insertions(+), 2 deletions(-)

Comments

Dmitry Torokhov Dec. 20, 2021, 9:49 p.m. UTC | #1
Hi Paul,

On Mon, Dec 20, 2021 at 1:07 PM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
>
> From: Furquan Shaikh <furquan@google.com>
>
> Dear Linux folks,
>
>
> Google Chromebooks are often built with devices sourced from different
> vendors. These need to be probed. To deal with this, the firmware – in
> this case coreboot – tags such optional devices accordingly – I think
> this is commit fbf2c79b (drivers/i2c/generic: Add config for marking
> device as probed) – and Chromium OS’ Linux kernel has the patch at hand
> applied to act accordingly. Right after the merge, Dmitry created a
> revert, which was actively discussed for two days but wasn’t applied.
> That means, millions of devices shipped with such a firmware and Linux
> kernel. To support these devices with upstream Linux kernel, is there an
> alternative to applying the patch to the Linux kernel, and to support
> the shipped devices?

*sigh* I should have pushed harder, but I see it managed to
proliferate even into our newer kernels. Not having this patch should
not cause any problems, it can only hurt, because the i2c core has no
idea how to power up and reset the device properly. The only downside
of not having this patch is that we may have devices in sysfs that are
not connected to actual hardware. They do now cause any problems and
is how we have been shipping ARM-based devices where we also dual- and
triple-source components. However if we were to have a device that
switches between several addresses (let's say device in bootloader
mode uses 0x10 address and in normal mode 0x20) this "probing" may
result in device not being detected at all.

If we wanted to do this correctly, coreboot would have to implement
full power and reset control and also add drivers for I2C controllers
to be able to communicate with peripherals, and then adjust _STA
methods to report "not present" when the device is indeed absent. And
note that even in this case we would have issues with "morphing
devices", so coreboot would also need to know how to reset device out
of bootloader mode, and maybe flash firmware so device can work in
normal mode.

However coreboot does (or did?) not want to add code to handle i2c
controllers, and would like to push this knowledge to the kernel. And
the kernel does know how to handle peripherals properly, but that
knowledge lies in individual drivers, not i2c core.

We should remove "linux,probed" from coreboot and not propagate to
newer Chrome OS kernels, and keep it away from upstream.

Thanks,
Dmitry
Guenter Roeck Dec. 21, 2021, 4:47 p.m. UTC | #2
On Mon, Dec 20, 2021 at 1:49 PM Dmitry Torokhov <dtor@chromium.org> wrote:
>
> Hi Paul,
>
> On Mon, Dec 20, 2021 at 1:07 PM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
> >
> > From: Furquan Shaikh <furquan@google.com>
> >
> > Dear Linux folks,
> >
> >
> > Google Chromebooks are often built with devices sourced from different
> > vendors. These need to be probed. To deal with this, the firmware – in
> > this case coreboot – tags such optional devices accordingly – I think
> > this is commit fbf2c79b (drivers/i2c/generic: Add config for marking
> > device as probed) – and Chromium OS’ Linux kernel has the patch at hand
> > applied to act accordingly. Right after the merge, Dmitry created a
> > revert, which was actively discussed for two days but wasn’t applied.
> > That means, millions of devices shipped with such a firmware and Linux
> > kernel. To support these devices with upstream Linux kernel, is there an
> > alternative to applying the patch to the Linux kernel, and to support
> > the shipped devices?
>
> *sigh* I should have pushed harder, but I see it managed to
> proliferate even into our newer kernels. Not having this patch should
> not cause any problems, it can only hurt, because the i2c core has no
> idea how to power up and reset the device properly. The only downside
> of not having this patch is that we may have devices in sysfs that are
> not connected to actual hardware. They do now cause any problems and
> is how we have been shipping ARM-based devices where we also dual- and
> triple-source components. However if we were to have a device that
> switches between several addresses (let's say device in bootloader
> mode uses 0x10 address and in normal mode 0x20) this "probing" may
> result in device not being detected at all.
>
> If we wanted to do this correctly, coreboot would have to implement
> full power and reset control and also add drivers for I2C controllers
> to be able to communicate with peripherals, and then adjust _STA
> methods to report "not present" when the device is indeed absent. And
> note that even in this case we would have issues with "morphing
> devices", so coreboot would also need to know how to reset device out
> of bootloader mode, and maybe flash firmware so device can work in
> normal mode.
>
> However coreboot does (or did?) not want to add code to handle i2c
> controllers, and would like to push this knowledge to the kernel. And
> the kernel does know how to handle peripherals properly, but that
> knowledge lies in individual drivers, not i2c core.
>
> We should remove "linux,probed" from coreboot and not propagate to
> newer Chrome OS kernels, and keep it away from upstream.
>

Revert from chromeos-5.15 is at
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3350347.
Everyone please feel free to comment there.

Guenter
Paul Menzel Dec. 21, 2021, 7:42 p.m. UTC | #3
Dear Guenter, dear Dmitry,


Am 21.12.21 um 17:47 schrieb Guenter Roeck:
> On Mon, Dec 20, 2021 at 1:49 PM Dmitry Torokhov <dtor@chromium.org> wrote:

>> On Mon, Dec 20, 2021 at 1:07 PM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
>>>
>>> From: Furquan Shaikh <furquan@google.com>

>>> Google Chromebooks are often built with devices sourced from different
>>> vendors. These need to be probed. To deal with this, the firmware – in
>>> this case coreboot – tags such optional devices accordingly – I think
>>> this is commit fbf2c79b (drivers/i2c/generic: Add config for marking
>>> device as probed) – and Chromium OS’ Linux kernel has the patch at hand
>>> applied to act accordingly. Right after the merge, Dmitry created a
>>> revert, which was actively discussed for two days but wasn’t applied.
>>> That means, millions of devices shipped with such a firmware and Linux
>>> kernel. To support these devices with upstream Linux kernel, is there an
>>> alternative to applying the patch to the Linux kernel, and to support
>>> the shipped devices?
>>
>> *sigh* I should have pushed harder, but I see it managed to
>> proliferate even into our newer kernels. Not having this patch should
>> not cause any problems, it can only hurt, because the i2c core has no
>> idea how to power up and reset the device properly. The only downside
>> of not having this patch is that we may have devices in sysfs that are
>> not connected to actual hardware. They do now cause any problems and
>> is how we have been shipping ARM-based devices where we also dual- and
>> triple-source components. However if we were to have a device that
>> switches between several addresses (let's say device in bootloader
>> mode uses 0x10 address and in normal mode 0x20) this "probing" may
>> result in device not being detected at all.

On google/sarien, the (upstream) Linux kernel sometimes detects the 
Melfas touchscreen and sometimes not, but in never works. When it’s 
detected, the errors below are still shown.

```
$ grep i2c voidlinux-linux-5.13.19-messages.txt
[    9.392598] i2c i2c-7: 2/2 memory slots populated (from DMI)
[    9.393108] i2c i2c-7: Successfully instantiated SPD at 0x50
[    9.622151] input: MELFAS MIP4 Touchscreen as 
/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-8/i2c-MLFS0000:00/input/input6
[    9.657964] cr50_i2c i2c-GOOG0005:00: cr50 TPM 2.0 (i2c 0x50 irq 114 
id 0x28)
[    9.662309] elan_i2c i2c-ELAN0000:00: supply vcc not found, using 
dummy regulator
[    9.773244] elan_i2c i2c-ELAN0000:00: Elan Touchpad: Module ID: 
0x00d6, Firmware: 0x0005, Sample: 0x0009, IAP: 0x0001
[    9.773349] input: Elan Touchpad as 
/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-9/i2c-ELAN0000:00/input/input7
[   10.820307] i2c_designware i2c_designware.0: controller timed out
[   10.820359] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer 
failed: -110 (-110)
[   11.844523] i2c_designware i2c_designware.0: controller timed out
[   11.844635] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer 
failed: -110 (-110)
[   12.868376] i2c_designware i2c_designware.0: controller timed out
[   12.868488] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer 
failed: -110 (-110)
[   12.868570] mip4_ts i2c-MLFS0000:00: Failed to read packet info: -110
```

Is that related to the probing stuff?

>> If we wanted to do this correctly, coreboot would have to implement
>> full power and reset control and also add drivers for I2C controllers
>> to be able to communicate with peripherals, and then adjust _STA
>> methods to report "not present" when the device is indeed absent. And
>> note that even in this case we would have issues with "morphing
>> devices", so coreboot would also need to know how to reset device out
>> of bootloader mode, and maybe flash firmware so device can work in
>> normal mode.

What do you mean by “bootloader mode”? coreboot also cannot flash 
anything. That’s up to the payload, and even there support for flashing 
is rare.

Duncan wrote something about the ACPI _STA method idea, that ASL(?) and 
I2C do not go well together.

>> However coreboot does (or did?) not want to add code to handle i2c
>> controllers, and would like to push this knowledge to the kernel. And
>> the kernel does know how to handle peripherals properly, but that
>> knowledge lies in individual drivers, not i2c core.

Excuse my ignorance, can you give an example driver? Does the Melfas 
touchscreen driver (`drivers/input/touchscreen/melfas_mip4.c`) support it?

>> We should remove "linux,probed" from coreboot and not propagate to
>> newer Chrome OS kernels, and keep it away from upstream.
> 
> Revert from chromeos-5.15 is at
> https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3350347.
> Everyone please feel free to comment there.

Guenther, thank you for your quick response. Note, that neither Furquan, 
nor Aaron, nor Duncan work at Google anymore, so won’t comment. 
Hopefully, others from the Chromium OS/coreboot folks can chime in.


Kind regards,

Paul
[    0.000000] Linux version 5.13.19_1 (voidlinux@voidlinux) (gcc (GCC) 10.2.1 20201203, GNU ld (GNU Binutils) 2.35.1) #1 SMP Sat Sep 18 18:18:26 UTC 2021
[    0.000000] Command line: BOOT_IMAGE=(cd0)/boot/vmlinuz root=live:CDLABEL=VOID_LIVE ro init=/sbin/init rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 gpt add_efi_memmap vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8 rd.live.overlay.overlayfs=1
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: xstate_offset[3]:  832, xstate_sizes[3]:   64
[    0.000000] x86/fpu: xstate_offset[4]:  896, xstate_sizes[4]:   64
[    0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 960 bytes, using 'compacted' format.
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000000fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000001000-0x000000000009ffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000896adfff] usable
[    0.000000] BIOS-e820: [mem 0x00000000896ae000-0x000000008972dfff] type 20
[    0.000000] BIOS-e820: [mem 0x000000008972e000-0x00000000897f1fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000897f2000-0x00000000897fcfff] usable
[    0.000000] BIOS-e820: [mem 0x00000000897fd000-0x00000000897fdfff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000897fe000-0x0000000089afcfff] usable
[    0.000000] BIOS-e820: [mem 0x0000000089afd000-0x000000008f7fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fc000000-0x00000000fc000fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fe000000-0x00000000fe00ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed17fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed83fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed90000-0x00000000fed91fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feda0000-0x00000000feda1fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000086e7fffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] efi: EFI v2.70 by EDK II
[    0.000000] efi: ACPI 2.0=0x89c0f000 SMBIOS=0x89afd000 MEMATTR=0x89202318 
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Dell Inc. Sarien/Sarien, BIOS Google_Sarien.12200.155.0 07/29/2020
[    0.000000] tsc: Detected 1900.000 MHz processor
[    0.000000] tsc: Detected 1899.950 MHz TSC
[    0.000010] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000015] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000024] last_pfn = 0x86e800 max_arch_pfn = 0x400000000
[    0.000225] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.001489] last_pfn = 0x89afd max_arch_pfn = 0x400000000
[    0.014649] Using GB pages for direct mapping
[    0.015883] Secure boot disabled
[    0.015884] RAMDISK: [mem 0x2f007000-0x337fafff]
[    0.015892] ACPI: Early table checksum verification disabled
[    0.015895] ACPI: RSDP 0x0000000089C0F000 000024 (v02 COREv4)
[    0.015902] ACPI: XSDT 0x00000000897FDF18 00006C (v01 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015910] ACPI: FACP 0x0000000089C14240 0000F4 (v04 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015917] ACPI: DSDT 0x0000000089C0F280 004FBB (v02 COREv4 COREBOOT 20110725 INTL 20190215)
[    0.015922] ACPI: FACS 0x0000000089C0F240 000040
[    0.015926] ACPI: FACS 0x0000000089C0F240 000040
[    0.015930] ACPI: SSDT 0x0000000089C14340 0014D2 (v02 COREv4 COREBOOT 0000002A CORE 20190215)
[    0.015935] ACPI: MCFG 0x0000000089C15820 00003C (v01 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015939] ACPI: TPM2 0x0000000089C15860 00004C (v04 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015944] ACPI: APIC 0x0000000089C158B0 00008C (v02 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015948] ACPI: DMAR 0x0000000089C15940 000088 (v01 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015953] ACPI: DBG2 0x0000000089C179D0 000061 (v00 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015957] ACPI: HPET 0x0000000089C17A40 000038 (v01 COREv4 COREBOOT 00000000 CORE 20190215)
[    0.015962] ACPI: BGRT 0x00000000897FD018 000038 (v00 INTEL      EDK2 00001720 PTL  00000002)
[    0.015966] ACPI: Reserving FACP table memory at [mem 0x89c14240-0x89c14333]
[    0.015968] ACPI: Reserving DSDT table memory at [mem 0x89c0f280-0x89c1423a]
[    0.015970] ACPI: Reserving FACS table memory at [mem 0x89c0f240-0x89c0f27f]
[    0.015972] ACPI: Reserving FACS table memory at [mem 0x89c0f240-0x89c0f27f]
[    0.015973] ACPI: Reserving SSDT table memory at [mem 0x89c14340-0x89c15811]
[    0.015975] ACPI: Reserving MCFG table memory at [mem 0x89c15820-0x89c1585b]
[    0.015977] ACPI: Reserving TPM2 table memory at [mem 0x89c15860-0x89c158ab]
[    0.015978] ACPI: Reserving APIC table memory at [mem 0x89c158b0-0x89c1593b]
[    0.015980] ACPI: Reserving DMAR table memory at [mem 0x89c15940-0x89c159c7]
[    0.015981] ACPI: Reserving DBG2 table memory at [mem 0x89c179d0-0x89c17a30]
[    0.015983] ACPI: Reserving HPET table memory at [mem 0x89c17a40-0x89c17a77]
[    0.015985] ACPI: Reserving BGRT table memory at [mem 0x897fd018-0x897fd04f]
[    0.016001] ACPI: Local APIC address 0xfee00000
[    0.016160] No NUMA configuration found
[    0.016162] Faking a node at [mem 0x0000000000000000-0x000000086e7fffff]
[    0.016167] NODE_DATA(0) allocated [mem 0x86e7fb000-0x86e7fffff]
[    0.016234] Zone ranges:
[    0.016235]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.016238]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.016241]   Normal   [mem 0x0000000100000000-0x000000086e7fffff]
[    0.016244]   Device   empty
[    0.016246] Movable zone start for each node
[    0.016247] Early memory node ranges
[    0.016248]   node   0: [mem 0x0000000000001000-0x000000000009ffff]
[    0.016250]   node   0: [mem 0x0000000000100000-0x00000000896adfff]
[    0.016252]   node   0: [mem 0x00000000897f2000-0x00000000897fcfff]
[    0.016254]   node   0: [mem 0x00000000897fe000-0x0000000089afcfff]
[    0.016255]   node   0: [mem 0x0000000100000000-0x000000086e7fffff]
[    0.016262] Initmem setup node 0 [mem 0x0000000000001000-0x000000086e7fffff]
[    0.016265] On node 0 totalpages: 8356183
[    0.016267]   DMA zone: 64 pages used for memmap
[    0.016268]   DMA zone: 1199 pages reserved
[    0.016269]   DMA zone: 3999 pages, LIFO batch:0
[    0.016272]   DMA32 zone: 8743 pages used for memmap
[    0.016273]   DMA32 zone: 559544 pages, LIFO batch:63
[    0.016275]   Normal zone: 121760 pages used for memmap
[    0.016276]   Normal zone: 7792640 pages, LIFO batch:63
[    0.016280] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.016314] On node 0, zone DMA: 96 pages in unavailable ranges
[    0.020850] On node 0, zone DMA32: 324 pages in unavailable ranges
[    0.020860] On node 0, zone DMA32: 1 pages in unavailable ranges
[    0.084489] On node 0, zone Normal: 25859 pages in unavailable ranges
[    0.084570] On node 0, zone Normal: 6144 pages in unavailable ranges
[    0.084587] Reserving Intel graphics memory at [mem 0x8b800000-0x8f7fffff]
[    0.084885] ACPI: PM-Timer IO Port: 0x1808
[    0.084888] ACPI: Local APIC address 0xfee00000
[    0.084945] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119
[    0.084950] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.084953] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.084955] ACPI: IRQ0 used by override.
[    0.084957] ACPI: IRQ9 used by override.
[    0.084960] Using ACPI (MADT) for SMP configuration information
[    0.084962] ACPI: HPET id: 0x8086a701 base: 0xfed00000
[    0.084973] e820: update [mem 0x88704000-0x88721fff] usable ==> reserved
[    0.084985] TSC deadline timer available
[    0.084986] smpboot: Allowing 8 CPUs, 0 hotplug CPUs
[    0.085012] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.085015] PM: hibernation: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.085019] PM: hibernation: Registered nosave memory: [mem 0x88704000-0x88721fff]
[    0.085021] PM: hibernation: Registered nosave memory: [mem 0x896ae000-0x8972dfff]
[    0.085023] PM: hibernation: Registered nosave memory: [mem 0x8972e000-0x897f1fff]
[    0.085026] PM: hibernation: Registered nosave memory: [mem 0x897fd000-0x897fdfff]
[    0.085028] PM: hibernation: Registered nosave memory: [mem 0x89afd000-0x8f7fffff]
[    0.085030] PM: hibernation: Registered nosave memory: [mem 0x8f800000-0xdfffffff]
[    0.085031] PM: hibernation: Registered nosave memory: [mem 0xe0000000-0xefffffff]
[    0.085032] PM: hibernation: Registered nosave memory: [mem 0xf0000000-0xfbffffff]
[    0.085033] PM: hibernation: Registered nosave memory: [mem 0xfc000000-0xfc000fff]
[    0.085035] PM: hibernation: Registered nosave memory: [mem 0xfc001000-0xfdffffff]
[    0.085036] PM: hibernation: Registered nosave memory: [mem 0xfe000000-0xfe00ffff]
[    0.085037] PM: hibernation: Registered nosave memory: [mem 0xfe010000-0xfed0ffff]
[    0.085038] PM: hibernation: Registered nosave memory: [mem 0xfed10000-0xfed17fff]
[    0.085039] PM: hibernation: Registered nosave memory: [mem 0xfed18000-0xfed7ffff]
[    0.085041] PM: hibernation: Registered nosave memory: [mem 0xfed80000-0xfed83fff]
[    0.085042] PM: hibernation: Registered nosave memory: [mem 0xfed84000-0xfed8ffff]
[    0.085043] PM: hibernation: Registered nosave memory: [mem 0xfed90000-0xfed91fff]
[    0.085044] PM: hibernation: Registered nosave memory: [mem 0xfed92000-0xfed9ffff]
[    0.085046] PM: hibernation: Registered nosave memory: [mem 0xfeda0000-0xfeda1fff]
[    0.085047] PM: hibernation: Registered nosave memory: [mem 0xfeda2000-0xffffffff]
[    0.085051] [mem 0x8f800000-0xdfffffff] available for PCI devices
[    0.085053] Booting paravirtualized kernel on bare hardware
[    0.085056] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[    0.092494] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:8 nr_node_ids:1
[    0.092767] percpu: Embedded 55 pages/cpu s187480 r8192 d29608 u262144
[    0.092778] pcpu-alloc: s187480 r8192 d29608 u262144 alloc=1*2097152
[    0.092782] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 
[    0.092818] Built 1 zonelists, mobility grouping on.  Total pages: 8224417
[    0.092821] Policy zone: Normal
[    0.092822] Kernel command line: BOOT_IMAGE=(cd0)/boot/vmlinuz root=live:CDLABEL=VOID_LIVE ro init=/sbin/init rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 gpt add_efi_memmap vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8 rd.live.overlay.overlayfs=1
[    0.095716] Dentry cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[    0.097036] Inode-cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[    0.097144] mem auto-init: stack:off, heap alloc:on, heap free:off
[    0.194374] Memory: 32659872K/33424732K available (12295K kernel code, 3255K rwdata, 6912K rodata, 1764K init, 1408K bss, 764600K reserved, 0K cma-reserved)
[    0.194382] random: get_random_u64 called from __kmem_cache_create+0x2a/0x590 with crng_init=0
[    0.194571] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.194583] ftrace: allocating 37993 entries in 149 pages
[    0.215597] ftrace: allocated 149 pages with 4 groups
[    0.215744] rcu: Hierarchical RCU implementation.
[    0.215746] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=8.
[    0.215748] 	Trampoline variant of Tasks RCU enabled.
[    0.215749] 	Rude variant of Tasks RCU enabled.
[    0.215750] 	Tracing variant of Tasks RCU enabled.
[    0.215751] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[    0.215753] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.222265] NR_IRQS: 16640, nr_irqs: 2048, preallocated irqs: 16
[    0.222819] Console: colour dummy device 80x25
[    0.222840] printk: console [tty0] enabled
[    0.222866] ACPI: Core revision 20210331
[    0.223085] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns
[    0.223221] APIC: Switch to symmetric I/O mode setup
[    0.223223] DMAR: Host address width 39
[    0.223225] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.223232] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[    0.223237] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.223242] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[    0.223245] DMAR: RMRR base: 0x0000008b000000 end: 0x0000008f7fffff
[    0.223249] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.223252] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.223253] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.226127] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.226130] x2apic enabled
[    0.226159] Switched APIC routing to cluster x2apic.
[    0.233413] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.238139] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x36c5f9386c6, max_idle_ns: 881590416379 ns
[    0.238159] Calibrating delay loop (skipped), value calculated using timer frequency.. 3799.90 BogoMIPS (lpj=1899950)
[    0.238164] pid_max: default: 32768 minimum: 301
[    0.239275] LSM: Security Framework initializing
[    0.239280] Yama: becoming mindful.
[    0.239390] Mount-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.239458] Mountpoint-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.239805] CPU0: Thermal monitoring enabled (TM1)
[    0.239857] process: using mwait in idle threads
[    0.239860] Last level iTLB entries: 4KB 64, 2MB 8, 4MB 8
[    0.239862] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4
[    0.239867] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.239870] Spectre V2 : Mitigation: Enhanced IBRS
[    0.239871] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[    0.239874] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[    0.239876] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl and seccomp
[    0.239879] TAA: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.239881] SRBDS: Vulnerable: No microcode
[    0.246973] Freeing SMP alternatives memory: 32K
[    0.247240] smpboot: Estimated ratio of average max frequency by base frequency (times 1024): 2048
[    0.247264] smpboot: CPU0: Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz (family: 0x6, model: 0x8e, stepping: 0xc)
[    0.247407] Performance Events: PEBS fmt3+, Skylake events, 32-deep LBR, full-width counters, Intel PMU driver.
[    0.247424] ... version:                4
[    0.247425] ... bit width:              48
[    0.247426] ... generic registers:      4
[    0.247427] ... value mask:             0000ffffffffffff
[    0.247429] ... max period:             00007fffffffffff
[    0.247430] ... fixed-purpose events:   3
[    0.247431] ... event mask:             000000070000000f
[    0.247569] rcu: Hierarchical SRCU implementation.
[    0.248477] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[    0.248566] smp: Bringing up secondary CPUs ...
[    0.248672] x86: Booting SMP configuration:
[    0.248674] .... node  #0, CPUs:      #1
[    0.249299] TAA CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html for more details.
[    0.249299]  #2 #3 #4 #5 #6 #7
[    0.253866] smp: Brought up 1 node, 8 CPUs
[    0.253866] smpboot: Max logical packages: 1
[    0.253866] smpboot: Total of 8 processors activated (30399.20 BogoMIPS)
[    0.255303] devtmpfs: initialized
[    0.255303] x86/mm: Memory block size: 128MB
[    0.258158] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.258176] futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
[    0.258241] pinctrl core: initialized pinctrl subsystem
[    0.258501] NET: Registered protocol family 16
[    0.258664] audit: initializing netlink subsys (disabled)
[    0.258672] audit: type=2000 audit(1640113955.029:1): state=initialized audit_enabled=0 res=1
[    0.258672] thermal_sys: Registered thermal governor 'bang_bang'
[    0.258672] thermal_sys: Registered thermal governor 'step_wise'
[    0.258672] thermal_sys: Registered thermal governor 'user_space'
[    0.258672] thermal_sys: Registered thermal governor 'power_allocator'
[    0.258672] cpuidle: using governor ladder
[    0.258672] cpuidle: using governor menu
[    0.258672] ACPI: bus type PCI registered
[    0.258672] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.258672] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.258672] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
[    0.258672] PCI: Using configuration type 1 for base access
[    0.260852] Kprobes globally optimized
[    0.260858] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.260858] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.261234] ACPI: Added _OSI(Module Device)
[    0.261236] ACPI: Added _OSI(Processor Device)
[    0.261237] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.261238] ACPI: Added _OSI(Processor Aggregator Device)
[    0.261240] ACPI: Added _OSI(Linux-Dell-Video)
[    0.261241] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    0.261243] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
[    0.264789] ACPI: 2 ACPI AML tables successfully acquired and loaded
[    0.266771] ACPI: EC: EC started
[    0.266773] ACPI: EC: interrupt blocked
[    0.275178] ACPI: EC: EC_CMD/EC_SC=0x934, EC_DATA=0x930
[    0.275182] ACPI: \_SB_.PCI0.LPCB.EC0_: Boot DSDT EC used to handle transactions
[    0.275184] ACPI: Interpreter enabled
[    0.275203] ACPI: (supports S0 S3 S4 S5)
[    0.275205] ACPI: Using IOAPIC for interrupt routing
[    0.275227] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.281115] ACPI: PM: Power Resource [PRIC] (on)
[    0.350268] ACPI: PM: Power Resource [PRIC] (on)
[    0.527079] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.527099] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[    0.527144] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER PCIeCapability LTR]
[    0.527696] PCI host bridge to bus 0000:00
[    0.527699] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
[    0.527702] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.527705] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[    0.527707] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000c3fff window]
[    0.527709] pci_bus 0000:00: root bus resource [mem 0x000c4000-0x000c7fff window]
[    0.527711] pci_bus 0000:00: root bus resource [mem 0x000c8000-0x000cbfff window]
[    0.527713] pci_bus 0000:00: root bus resource [mem 0x000cc000-0x000cffff window]
[    0.527714] pci_bus 0000:00: root bus resource [mem 0x000d0000-0x000d3fff window]
[    0.527716] pci_bus 0000:00: root bus resource [mem 0x000d4000-0x000d7fff window]
[    0.527718] pci_bus 0000:00: root bus resource [mem 0x000d8000-0x000dbfff window]
[    0.527720] pci_bus 0000:00: root bus resource [mem 0x000dc000-0x000dffff window]
[    0.527722] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000e3fff window]
[    0.527723] pci_bus 0000:00: root bus resource [mem 0x000e4000-0x000e7fff window]
[    0.527725] pci_bus 0000:00: root bus resource [mem 0x000e8000-0x000ebfff window]
[    0.527727] pci_bus 0000:00: root bus resource [mem 0x000ec000-0x000effff window]
[    0.527729] pci_bus 0000:00: root bus resource [mem 0x000f0000-0x000fffff window]
[    0.527730] pci_bus 0000:00: root bus resource [mem 0x8f800001-0xdfffffff window]
[    0.527732] pci_bus 0000:00: root bus resource [mem 0xfc800000-0xfe7fffff window]
[    0.527734] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed47fff window]
[    0.527736] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.527758] pci 0000:00:00.0: [8086:3e34] type 00 class 0x060000
[    0.527933] pci 0000:00:02.0: [8086:3ea0] type 00 class 0x030000
[    0.527947] pci 0000:00:02.0: reg 0x10: [mem 0xd0000000-0xd0ffffff 64bit]
[    0.527957] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref]
[    0.527963] pci 0000:00:02.0: reg 0x20: [io  0x1c00-0x1c3f]
[    0.527985] pci 0000:00:02.0: BAR 2: assigned to efifb
[    0.528119] pci 0000:00:04.0: [8086:1903] type 00 class 0x118000
[    0.528133] pci 0000:00:04.0: reg 0x10: [mem 0xd1330000-0xd1337fff 64bit]
[    0.528318] pci 0000:00:08.0: [8086:1911] type 00 class 0x088000
[    0.528335] pci 0000:00:08.0: reg 0x10: [mem 0xd1344000-0xd1344fff 64bit]
[    0.528524] pci 0000:00:12.0: [8086:9df9] type 00 class 0x118000
[    0.528548] pci 0000:00:12.0: reg 0x10: [mem 0xd1345000-0xd1345fff 64bit]
[    0.528756] pci 0000:00:14.0: [8086:9ded] type 00 class 0x0c0330
[    0.528775] pci 0000:00:14.0: reg 0x10: [mem 0xd1320000-0xd132ffff 64bit]
[    0.528844] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.528981] pci 0000:00:14.2: [8086:9def] type 00 class 0x050000
[    0.529003] pci 0000:00:14.2: reg 0x10: [mem 0xd1340000-0xd1341fff 64bit]
[    0.529019] pci 0000:00:14.2: reg 0x18: [mem 0xd1346000-0xd1346fff 64bit]
[    0.529257] pci 0000:00:14.3: [8086:9df0] type 00 class 0x028000
[    0.529387] pci 0000:00:14.3: reg 0x10: [mem 0xd1338000-0xd133bfff 64bit]
[    0.530004] pci 0000:00:14.3: PME# supported from D0 D3hot D3cold
[    0.530244] pci 0000:00:15.0: [8086:9de8] type 00 class 0x0c8000
[    0.530270] pci 0000:00:15.0: reg 0x10: [mem 0xd1347000-0xd1347fff 64bit]
[    0.530490] pci 0000:00:15.1: [8086:9de9] type 00 class 0x0c8000
[    0.530516] pci 0000:00:15.1: reg 0x10: [mem 0xd1348000-0xd1348fff 64bit]
[    0.530787] pci 0000:00:17.0: [8086:9dd3] type 00 class 0x010601
[    0.530804] pci 0000:00:17.0: reg 0x10: [mem 0xd1342000-0xd1343fff]
[    0.530814] pci 0000:00:17.0: reg 0x14: [mem 0xd134f000-0xd134f0ff]
[    0.530825] pci 0000:00:17.0: reg 0x18: [io  0x1c60-0x1c67]
[    0.530835] pci 0000:00:17.0: reg 0x1c: [io  0x1c68-0x1c6b]
[    0.530845] pci 0000:00:17.0: reg 0x20: [io  0x1c40-0x1c5f]
[    0.530855] pci 0000:00:17.0: reg 0x24: [mem 0xd134e000-0xd134e7ff]
[    0.530904] pci 0000:00:17.0: PME# supported from D3hot
[    0.531023] pci 0000:00:19.0: [8086:9dc5] type 00 class 0x0c8000
[    0.531049] pci 0000:00:19.0: reg 0x10: [mem 0xd134a000-0xd134afff 64bit]
[    0.531066] pci 0000:00:19.0: reg 0x18: [mem 0xd134b000-0xd134bfff 64bit]
[    0.531274] pci 0000:00:19.2: [8086:9dc7] type 00 class 0x078000
[    0.531301] pci 0000:00:19.2: reg 0x10: [mem 0xfe036000-0xfe036fff 64bit]
[    0.531318] pci 0000:00:19.2: reg 0x18: [mem 0xd134c000-0xd134cfff 64bit]
[    0.531584] pci 0000:00:1c.0: [8086:9dbf] type 01 class 0x060400
[    0.531676] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.531902] pci 0000:00:1d.0: [8086:9db4] type 01 class 0x060400
[    0.532001] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.532229] pci 0000:00:1f.0: [8086:9d84] type 00 class 0x060100
[    0.532480] pci 0000:00:1f.3: [8086:9dc8] type 00 class 0x040300
[    0.532539] pci 0000:00:1f.3: reg 0x10: [mem 0xd133c000-0xd133ffff 64bit]
[    0.532623] pci 0000:00:1f.3: reg 0x20: [mem 0xd1200000-0xd12fffff 64bit]
[    0.532756] pci 0000:00:1f.3: PME# supported from D3hot D3cold
[    0.532984] pci 0000:00:1f.4: [8086:9da3] type 00 class 0x0c0500
[    0.533011] pci 0000:00:1f.4: reg 0x10: [mem 0xd1350000-0xd13500ff 64bit]
[    0.533044] pci 0000:00:1f.4: reg 0x20: [io  0xefa0-0xefbf]
[    0.533212] pci 0000:00:1f.5: [8086:9da4] type 00 class 0x0c8000
[    0.533230] pci 0000:00:1f.5: reg 0x10: [mem 0xfe010000-0xfe010fff]
[    0.533413] pci 0000:00:1f.6: [8086:15be] type 00 class 0x020000
[    0.533458] pci 0000:00:1f.6: reg 0x10: [mem 0xd1300000-0xd131ffff]
[    0.533691] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold
[    0.533909] pci 0000:01:00.0: [10ec:525a] type 00 class 0xff0000
[    0.533944] pci 0000:01:00.0: reg 0x14: [mem 0xd1000000-0xd1000fff]
[    0.534093] pci 0000:01:00.0: supports D1 D2
[    0.534095] pci 0000:01:00.0: PME# supported from D1 D2 D3hot D3cold
[    0.534277] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.534283] pci 0000:00:1c.0:   bridge window [mem 0xd1000000-0xd10fffff]
[    0.534371] pci 0000:02:00.0: [15b7:5007] type 00 class 0x010802
[    0.534396] pci 0000:02:00.0: reg 0x10: [mem 0xd1100000-0xd1103fff 64bit]
[    0.534429] pci 0000:02:00.0: reg 0x20: [mem 0xd1104000-0xd11040ff 64bit]
[    0.534638] pci 0000:00:1d.0: PCI bridge to [bus 02]
[    0.534644] pci 0000:00:1d.0:   bridge window [mem 0xd1100000-0xd11fffff]
[    0.538988] ACPI: EC: interrupt unblocked
[    0.538990] ACPI: EC: event unblocked
[    0.539002] ACPI: EC: EC_CMD/EC_SC=0x934, EC_DATA=0x930
[    0.539004] ACPI: EC: GPE=0x6e
[    0.539007] ACPI: \_SB_.PCI0.LPCB.EC0_: Boot DSDT EC initialization complete
[    0.539010] ACPI: \_SB_.PCI0.LPCB.EC0_: EC: Used to handle transactions and events
[    0.539061] iommu: Default domain type: Translated 
[    0.539079] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[    0.539079] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.539079] pci 0000:00:02.0: vgaarb: bridge control possible
[    0.539079] vgaarb: loaded
[    0.539233] pps_core: LinuxPPS API ver. 1 registered
[    0.539235] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.539240] PTP clock support registered
[    0.539251] EDAC MC: Ver: 3.0.0
[    0.539460] Registered efivars operations
[    0.539460] PCI: Using ACPI for IRQ routing
[    0.583151] PCI: pci_cache_line_size set to 64 bytes
[    0.583358] e820: reserve RAM buffer [mem 0x88704000-0x8bffffff]
[    0.583363] e820: reserve RAM buffer [mem 0x896ae000-0x8bffffff]
[    0.583365] e820: reserve RAM buffer [mem 0x897fd000-0x8bffffff]
[    0.583368] e820: reserve RAM buffer [mem 0x89afd000-0x8bffffff]
[    0.583369] e820: reserve RAM buffer [mem 0x86e800000-0x86fffffff]
[    0.583378] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.583378] hpet0: 8 comparators, 64-bit 24.000000 MHz counter
[    0.586191] clocksource: Switched to clocksource tsc-early
[    0.595864] VFS: Disk quotas dquot_6.6.0
[    0.595884] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.595962] pnp: PnP ACPI init
[    0.596145] system 00:00: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.596152] system 00:00: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.596162] system 00:00: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.596166] system 00:00: [mem 0xe0000000-0xefffffff] has been reserved
[    0.596169] system 00:00: [mem 0xfed90000-0xfed93fff] could not be reserved
[    0.596172] system 00:00: [mem 0xfff00000-0x100efffff] could not be reserved
[    0.596175] system 00:00: [mem 0xfee00000-0xfeefffff] has been reserved
[    0.596179] system 00:00: [mem 0xfed00000-0xfed003ff] has been reserved
[    0.596188] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.596263] system 00:01: [io  0x1800-0x18fe] has been reserved
[    0.596269] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.596290] pnp 00:02: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.596330] pnp 00:03: Plug and Play ACPI device, IDs PNP0303 PNP030b (active)
[    0.604942] pnp: PnP ACPI: found 4 devices
[    0.610876] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.610958] NET: Registered protocol family 2
[    0.611182] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.614086] tcp_listen_portaddr_hash hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.614344] TCP established hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.614794] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes, linear)
[    0.614910] TCP: Hash tables configured (established 262144 bind 65536)
[    0.615080] MPTCP token hash table entries: 32768 (order: 7, 786432 bytes, linear)
[    0.615250] UDP hash table entries: 16384 (order: 7, 524288 bytes, linear)
[    0.615377] UDP-Lite hash table entries: 16384 (order: 7, 524288 bytes, linear)
[    0.615621] NET: Registered protocol family 1
[    0.615627] NET: Registered protocol family 44
[    0.615645] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.615655] pci 0000:00:1c.0:   bridge window [mem 0xd1000000-0xd10fffff]
[    0.615663] pci 0000:00:1d.0: PCI bridge to [bus 02]
[    0.615668] pci 0000:00:1d.0:   bridge window [mem 0xd1100000-0xd11fffff]
[    0.615677] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.615680] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.615682] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[    0.615684] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000c3fff window]
[    0.615686] pci_bus 0000:00: resource 8 [mem 0x000c4000-0x000c7fff window]
[    0.615688] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000cbfff window]
[    0.615690] pci_bus 0000:00: resource 10 [mem 0x000cc000-0x000cffff window]
[    0.615692] pci_bus 0000:00: resource 11 [mem 0x000d0000-0x000d3fff window]
[    0.615694] pci_bus 0000:00: resource 12 [mem 0x000d4000-0x000d7fff window]
[    0.615695] pci_bus 0000:00: resource 13 [mem 0x000d8000-0x000dbfff window]
[    0.615697] pci_bus 0000:00: resource 14 [mem 0x000dc000-0x000dffff window]
[    0.615699] pci_bus 0000:00: resource 15 [mem 0x000e0000-0x000e3fff window]
[    0.615701] pci_bus 0000:00: resource 16 [mem 0x000e4000-0x000e7fff window]
[    0.615703] pci_bus 0000:00: resource 17 [mem 0x000e8000-0x000ebfff window]
[    0.615705] pci_bus 0000:00: resource 18 [mem 0x000ec000-0x000effff window]
[    0.615706] pci_bus 0000:00: resource 19 [mem 0x000f0000-0x000fffff window]
[    0.615708] pci_bus 0000:00: resource 20 [mem 0x8f800001-0xdfffffff window]
[    0.615710] pci_bus 0000:00: resource 21 [mem 0xfc800000-0xfe7fffff window]
[    0.615712] pci_bus 0000:00: resource 22 [mem 0xfed40000-0xfed47fff window]
[    0.615714] pci_bus 0000:01: resource 1 [mem 0xd1000000-0xd10fffff]
[    0.615716] pci_bus 0000:02: resource 1 [mem 0xd1100000-0xd11fffff]
[    0.615799] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.616221] PCI: CLS 64 bytes, default 64
[    0.616249] DMAR: No ATSR found
[    0.616250] DMAR: No SATC found
[    0.616257] DMAR: IOMMU feature fl1gp_support inconsistent
[    0.616259] DMAR: IOMMU feature pgsel_inv inconsistent
[    0.616260] DMAR: IOMMU feature nwfs inconsistent
[    0.616261] DMAR: IOMMU feature pasid inconsistent
[    0.616262] DMAR: IOMMU feature eafs inconsistent
[    0.616263] DMAR: IOMMU feature prs inconsistent
[    0.616264] DMAR: IOMMU feature nest inconsistent
[    0.616265] DMAR: IOMMU feature mts inconsistent
[    0.616266] DMAR: IOMMU feature sc_support inconsistent
[    0.616267] DMAR: IOMMU feature dev_iotlb_support inconsistent
[    0.616268] DMAR: dmar0: Using Queued invalidation
[    0.616272] DMAR: dmar1: Using Queued invalidation
[    0.616295] Trying to unpack rootfs image as initramfs...
[    0.616569] pci 0000:00:00.0: Adding to iommu group 0
[    0.616582] pci 0000:00:02.0: Adding to iommu group 1
[    0.616593] pci 0000:00:04.0: Adding to iommu group 2
[    0.616604] pci 0000:00:08.0: Adding to iommu group 3
[    0.616623] pci 0000:00:12.0: Adding to iommu group 4
[    0.616642] pci 0000:00:14.0: Adding to iommu group 5
[    0.616652] pci 0000:00:14.2: Adding to iommu group 5
[    0.616663] pci 0000:00:14.3: Adding to iommu group 6
[    0.616682] pci 0000:00:15.0: Adding to iommu group 7
[    0.616693] pci 0000:00:15.1: Adding to iommu group 7
[    0.616703] pci 0000:00:17.0: Adding to iommu group 8
[    0.616722] pci 0000:00:19.0: Adding to iommu group 9
[    0.616733] pci 0000:00:19.2: Adding to iommu group 9
[    0.616748] pci 0000:00:1c.0: Adding to iommu group 10
[    0.616763] pci 0000:00:1d.0: Adding to iommu group 11
[    0.616794] pci 0000:00:1f.0: Adding to iommu group 12
[    0.616805] pci 0000:00:1f.3: Adding to iommu group 12
[    0.616817] pci 0000:00:1f.4: Adding to iommu group 12
[    0.616829] pci 0000:00:1f.5: Adding to iommu group 12
[    0.616840] pci 0000:00:1f.6: Adding to iommu group 12
[    0.616854] pci 0000:01:00.0: Adding to iommu group 13
[    0.616867] pci 0000:02:00.0: Adding to iommu group 14
[    0.618942] DMAR: Intel(R) Virtualization Technology for Directed I/O
[    0.618945] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.618946] software IO TLB: mapped [mem 0x0000000081af0000-0x0000000085af0000] (64MB)
[    0.626286] Initialise system trusted keyrings
[    0.626328] workingset: timestamp_bits=40 max_order=23 bucket_order=0
[    0.627901] zbud: loaded
[    0.628120] Key type asymmetric registered
[    0.628122] Asymmetric key parser 'x509' registered
[    0.628130] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.628178] io scheduler mq-deadline registered
[    0.628180] io scheduler kyber registered
[    0.628223] io scheduler bfq registered
[    0.628815] pcieport 0000:00:1c.0: PME: Signaling with IRQ 122
[    0.629041] pcieport 0000:00:1d.0: PME: Signaling with IRQ 123
[    0.629180] efifb: probing for efifb
[    0.629200] efifb: showing boot graphics
[    0.629878] efifb: framebuffer at 0xc0000000, using 3072k, total 3072k
[    0.629881] efifb: mode is 1024x768x32, linelength=4096, pages=1
[    0.629883] efifb: scrolling: redraw
[    0.629884] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.629928] fbcon: Deferring console take-over
[    0.629929] fb0: EFI VGA frame buffer device
[    0.631217] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.632947] nvme nvme0: pci function 0000:02:00.0
[    0.632990] e1000e: Intel(R) PRO/1000 Network Driver
[    0.632992] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.633236] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    0.646799] nvme nvme0: allocated 32 MiB host memory buffer.
[    0.647783] nvme nvme0: 8/0/0 default/read/poll queues
[    0.650324]  nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12
[    0.826858] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
[    0.892477] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) 38:14:28:30:09:fc
[    0.892482] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[    0.892577] e1000e 0000:00:1f.6 eth0: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
[    0.892638] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
[    0.892642] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
[    0.902884] i8042: Warning: Keylock active
[    0.903176] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.903465] mousedev: PS/2 mouse device common for all mice
[    0.903563] rtc_cmos 00:02: RTC can wake from S4
[    0.904861] rtc_cmos 00:02: registered as rtc0
[    0.905173] rtc_cmos 00:02: setting system clock to 2021-12-21T19:12:36 UTC (1640113956)
[    0.905195] rtc_cmos 00:02: alarms up to one month, 242 bytes nvram
[    0.905403] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    0.905494] intel_pstate: Intel P-state driver initializing
[    0.905904] intel_pstate: HWP enabled
[    0.905966] ledtrig-cpu: registered to indicate activity on CPUs
[    0.905969] EFI Variables Facility v0.08 2004-May-17
[    0.906176] intel_pmc_core intel_pmc_core.0:  initialized
[    0.906294] NET: Registered protocol family 10
[    1.668209] tsc: Refined TSC clocksource calibration: 1895.997 MHz
[    1.668215] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x36a8cd570f7, max_idle_ns: 881590638222 ns
[    1.668399] clocksource: Switched to clocksource tsc
[    4.490110] Freeing initrd memory: 73680K
[    4.493097] Segment Routing with IPv6
[    4.493099] RPL Segment Routing with IPv6
[    4.493119] NET: Registered protocol family 17
[    4.493140] Key type dns_resolver registered
[    4.493661] microcode: sig=0x806ec, pf=0x80, revision=0xb8
[    4.493842] microcode: Microcode Update Driver: v2.2.
[    4.493846] IPI shorthand broadcast: enabled
[    4.493852] sched_clock: Marking stable (4487407125, 6433092)->(4501455019, -7614802)
[    4.494046] registered taskstats version 1
[    4.494056] Loading compiled-in X.509 certificates
[    4.494242] zswap: loaded using pool lzo/zbud
[    4.494498] Key type ._fscrypt registered
[    4.494499] Key type .fscrypt registered
[    4.494499] Key type fscrypt-provisioning registered
[    4.495314] Freeing unused kernel image (initmem) memory: 1764K
[    4.513358] Write protecting the kernel read-only data: 22528k
[    4.513827] Freeing unused kernel image (text/rodata gap) memory: 2040K
[    4.513982] Freeing unused kernel image (rodata/data gap) memory: 1280K
[    4.514300] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    4.514304] Run /init as init process
[    4.514305]   with arguments:
[    4.514306]     /init
[    4.514307]   with environment:
[    4.514307]     HOME=/
[    4.514307]     TERM=linux
[    4.514308]     BOOT_IMAGE=(cd0)/boot/vmlinuz
[    4.576156] raid6: avx2x4   gen() 42647 MB/s
[    4.593156] raid6: avx2x4   xor() 17310 MB/s
[    4.610155] raid6: avx2x2   gen() 45385 MB/s
[    4.627156] raid6: avx2x2   xor() 27665 MB/s
[    4.644155] raid6: avx2x1   gen() 38222 MB/s
[    4.661155] raid6: avx2x1   xor() 23107 MB/s
[    4.678156] raid6: sse2x4   gen() 18114 MB/s
[    4.695156] raid6: sse2x4   xor() 10199 MB/s
[    4.712157] raid6: sse2x2   gen() 18329 MB/s
[    4.729155] raid6: sse2x2   xor() 11378 MB/s
[    4.746156] raid6: sse2x1   gen() 15500 MB/s
[    4.763155] raid6: sse2x1   xor()  7826 MB/s
[    4.763156] raid6: using algorithm avx2x2 gen() 45385 MB/s
[    4.763157] raid6: .... xor() 27665 MB/s, rmw enabled
[    4.763158] raid6: using avx2x2 recovery algorithm
[    4.763478] xor: automatically using best checksumming function   avx       
[    4.786956] Btrfs loaded, crc32c=crc32c-intel, zoned=yes
[    4.822459] dracut: rd.luks=0: removing cryptoluks activation
[    4.928405] loop: module loaded
[    4.929499] dracut: root was live:CDLABEL=VOID_LIVE, is now live:/dev/disk/by-label/VOID_LIVE
[    5.013590] device-mapper: uevent: version 1.0.3
[    5.013706] device-mapper: ioctl: 4.45.0-ioctl (2021-03-22) initialised: dm-devel@redhat.com
[    5.040836] systemd-udevd[328]: starting version 3.2.10
[    5.041127] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    5.041171] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    5.041187] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    5.043852] udevd[329]: starting eudev-3.2.10
[    5.053742] dracut: rd.dm=0: removing DM RAID activation
[    5.066069] dracut: rd.md.imsm=0: no MD RAID for imsm/isw raids
[    5.078385] dracut: rd.md.ddf=0: no MD RAID for SNIA ddf raids
[    5.106814] dracut: rd.md=0: removing MD RAID activation
[    5.157284] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:05/PNP0C09:00/PNP0C0D:00/input/input1
[    5.157340] ACPI: button: Lid Switch [LID]
[    5.157456] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[    5.161210] ACPI: button: Power Button [PWRF]
[    5.170740] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0
[    5.172577] hid: raw HID events driver (C) Jiri Kosina
[    5.173872] cryptd: max_cpu_qlen set to 1000
[    5.174920] SCSI subsystem initialized
[    5.175780] Linux agpgart interface v0.103
[    5.175805] ACPI: bus type USB registered
[    5.175823] usbcore: registered new interface driver usbfs
[    5.175830] usbcore: registered new interface driver hub
[    5.175842] usbcore: registered new device driver usb
[    5.177785] AVX2 version of gcm_enc/dec engaged.
[    5.177820] AES CTR mode by8 optimization enabled
[    5.180928] libata version 3.00 loaded.
[    5.183934] ahci 0000:00:17.0: version 3.0
[    5.188304] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
[    5.188313] ahci 0000:00:17.0: flags: 64bit ncq sntf pm clo only pio slum part deso sadm sds apst 
[    5.188394] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    5.188402] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    5.188492] scsi host0: ahci
[    5.188556] ata1: SATA max UDMA/133 abar m2048@0xd134e000 port 0xd134e100 irq 135
[    5.189516] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x110 quirks 0x0000000000009810
[    5.189694] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.13
[    5.189697] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.189699] usb usb1: Product: xHCI Host Controller
[    5.189701] usb usb1: Manufacturer: Linux 5.13.19_1 xhci-hcd
[    5.189702] usb usb1: SerialNumber: 0000:00:14.0
[    5.189824] hub 1-0:1.0: USB hub found
[    5.189842] hub 1-0:1.0: 12 ports detected
[    5.190268] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    5.190272] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    5.190276] xhci_hcd 0000:00:14.0: Host supports USB 3.1 Enhanced SuperSpeed
[    5.190311] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.13
[    5.190314] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.190315] usb usb2: Product: xHCI Host Controller
[    5.190316] usb usb2: Manufacturer: Linux 5.13.19_1 xhci-hcd
[    5.190318] usb usb2: SerialNumber: 0000:00:14.0
[    5.190468] hub 2-0:1.0: USB hub found
[    5.190487] hub 2-0:1.0: 6 ports detected
[    5.212448] random: fast init done
[    5.246015] ACPI: battery: Slot [BAT0] (battery present)
[    5.246882] ACPI: battery: Slot [BAT1] (battery absent)
[    5.254607] i915 0000:00:02.0: [drm] VT-d active for gfx access
[    5.254609] checking generic (c0000000 300000) vs hw (d0000000 1000000)
[    5.254610] checking generic (c0000000 300000) vs hw (c0000000 10000000)
[    5.254611] fb0: switching to inteldrmfb from EFI VGA
[    5.254784] i915 0000:00:02.0: vgaarb: deactivate vga console
[    5.305869] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    5.306451] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[    5.313339] i915 0000:00:02.0: [drm] [ENCODER:102:DDI B/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it
[    5.313344] i915 0000:00:02.0: [drm] [ENCODER:118:DDI C/PHY C] is disabled/in DSI mode with an ungated DDI clock, gate it
[    5.332300] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
[    5.430336] usb 1-6: new high-speed USB device number 2 using xhci_hcd
[    5.459184] fbcon: i915drmfb (fb0) is primary device
[    5.459192] fbcon: Deferring console take-over
[    5.459200] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[    5.498754] ata1: SATA link down (SStatus 4 SControl 300)
[    5.578332] usb 1-6: New USB device found, idVendor=0bda, idProduct=565c, bcdDevice=82.56
[    5.578343] usb 1-6: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[    5.578348] usb 1-6: Product: Integrated_Webcam_HD
[    5.578351] usb 1-6: Manufacturer: CN0V976R8LG0014JBYTVA01
[    5.578354] usb 1-6: SerialNumber: 200901010001
[    5.671566] usb 2-4: new SuperSpeed USB device number 2 using xhci_hcd
[    5.685078] usb 2-4: New USB device found, idVendor=0781, idProduct=5580, bcdDevice= 0.10
[    5.685090] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.685095] usb 2-4: Product: Extreme
[    5.685098] usb 2-4: Manufacturer: SanDisk
[    5.685101] usb 2-4: SerialNumber: AA010316151406035926
[    5.694418] usb-storage 2-4:1.0: USB Mass Storage device detected
[    5.695102] scsi host1: usb-storage 2-4:1.0
[    5.695289] usbcore: registered new interface driver usb-storage
[    5.697819] usbcore: registered new interface driver uas
[    5.798443] usb 1-10: new full-speed USB device number 3 using xhci_hcd
[    5.926590] usb 1-10: New USB device found, idVendor=8087, idProduct=0aaa, bcdDevice= 0.02
[    5.926604] usb 1-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    6.725075] scsi 1:0:0:0: Direct-Access     SanDisk  Extreme          0001 PQ: 0 ANSI: 6
[    6.730765] sd 1:0:0:0: [sda] 122544516 512-byte logical blocks: (62.7 GB/58.4 GiB)
[    6.731085] sd 1:0:0:0: [sda] Write Protect is off
[    6.731091] sd 1:0:0:0: [sda] Mode Sense: 53 00 00 08
[    6.731386] sd 1:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    6.751449] GPT:Primary header thinks Alt. header is not at the end of the disk.
[    6.751454] GPT:1783807 != 122544515
[    6.751458] GPT:Alternate GPT header not at the end of the disk.
[    6.751459] GPT:1783807 != 122544515
[    6.751461] GPT: Use GNU Parted to correct GPT errors.
[    6.751481]  sda: sda1 sda2
[    6.767812] sd 1:0:0:0: [sda] Attached SCSI removable disk
[    7.245959] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    7.283509] ISO 9660 Extensions: Microsoft Joliet Level 3
[    7.284062] ISO 9660 Extensions: RRIP_1991A
[    7.286347] loop0: detected capacity change from 0 to 1546160
[    7.300046] loop1: detected capacity change from 0 to 7778304
[    7.378012] EXT4-fs (loop1): mounting ext3 file system using the ext4 subsystem
[    7.400621] EXT4-fs (loop1): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[    7.412597] overlayfs: "xino" feature enabled using 2 upper inode bits.
[    7.480694] dracut: Mounted root filesystem LiveOS_rootfs
[    7.935937] dracut: Switching root
[    8.003430] fbcon: Taking over console
[    8.012713] Console: switching to colour frame buffer device 240x67
[    8.191011] random: crng init done
[    8.191015] random: 7 urandom warning(s) missed due to ratelimiting
[    8.538436] fuse: init (API version 7.34)
[    8.570990] Non-volatile memory driver v1.3
[    8.590141] tun: Universal TUN/TAP device driver, 1.6
[    8.608014] PPP generic driver version 2.4.2
[    8.646811] VFIO - User Level meta-driver version: 0.3
[    8.733174] Bluetooth: Core ver 2.22
[    8.733189] NET: Registered protocol family 31
[    8.733189] Bluetooth: HCI device and connection manager initialized
[    8.733192] Bluetooth: HCI socket layer initialized
[    8.733193] Bluetooth: L2CAP socket layer initialized
[    8.733194] Bluetooth: SCO socket layer initialized
[    8.782969] NET: Registered protocol family 40
[    8.949921] udevd[818]: starting version 3.2.10
[    8.966443] udevd[819]: starting eudev-3.2.10
[    9.083113] ACPI: AC: AC Adapter [AC] (off-line)
[    9.102779] chromeos ramoops using acpi device.
[    9.151440] input: Intel Virtual Buttons as /devices/pci0000:00/0000:00:1f.0/PNP0C09:00/INT33D6:00/input/input3
[    9.359838] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    9.361135] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    9.363058] input: PC Speaker as /devices/platform/pcspkr/input/input5
[    9.363414] idma64 idma64.0: Found Intel integrated DMA 64-bit
[    9.363638] idma64 idma64.1: Found Intel integrated DMA 64-bit
[    9.379629] i801_smbus 0000:00:1f.4: SPD Write Disable is set
[    9.379683] i801_smbus 0000:00:1f.4: SMBus using PCI interrupt
[    9.392598] i2c i2c-7: 2/2 memory slots populated (from DMI)
[    9.393108] i2c i2c-7: Successfully instantiated SPD at 0x50
[    9.407428] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    9.407433] cfg80211: failed to load regulatory.db
[    9.424914] proc_thermal 0000:00:04.0: Creating sysfs group for PROC_THERMAL_PCI
[    9.424946] intel_rapl_common: Found RAPL domain package
[    9.424948] intel_rapl_common: Found RAPL domain dram
[    9.456653] RAPL PMU: API unit is 2^-32 Joules, 5 fixed counters, 655360 ms ovfl timer
[    9.456656] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[    9.456657] RAPL PMU: hw unit of domain package 2^-14 Joules
[    9.456658] RAPL PMU: hw unit of domain dram 2^-14 Joules
[    9.456659] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[    9.456660] RAPL PMU: hw unit of domain psys 2^-14 Joules
[    9.472558] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.4)
[    9.487226] Intel(R) Wireless WiFi driver for Linux
[    9.487308] usbcore: registered new interface driver btusb
[    9.487971] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[    9.488973] Bluetooth: hci0: Device revision is 2
[    9.488975] Bluetooth: hci0: Secure boot is enabled
[    9.488976] Bluetooth: hci0: OTP lock is enabled
[    9.488977] Bluetooth: hci0: API lock is enabled
[    9.488978] Bluetooth: hci0: Debug lock is disabled
[    9.488979] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[    9.516807] intel_rapl_common: Found RAPL domain package
[    9.516809] intel_rapl_common: Found RAPL domain core
[    9.516810] intel_rapl_common: Found RAPL domain uncore
[    9.516811] intel_rapl_common: Found RAPL domain dram
[    9.516812] intel_rapl_common: Found RAPL domain psys
[    9.618102] iwlwifi 0000:00:14.3: WRT: Overriding region id 0
[    9.618105] iwlwifi 0000:00:14.3: WRT: Overriding region id 1
[    9.618106] iwlwifi 0000:00:14.3: WRT: Overriding region id 2
[    9.618107] iwlwifi 0000:00:14.3: WRT: Overriding region id 3
[    9.618108] iwlwifi 0000:00:14.3: WRT: Overriding region id 4
[    9.618109] iwlwifi 0000:00:14.3: WRT: Overriding region id 6
[    9.618109] iwlwifi 0000:00:14.3: WRT: Overriding region id 8
[    9.618110] iwlwifi 0000:00:14.3: WRT: Overriding region id 9
[    9.618111] iwlwifi 0000:00:14.3: WRT: Overriding region id 10
[    9.618111] iwlwifi 0000:00:14.3: WRT: Overriding region id 11
[    9.618112] iwlwifi 0000:00:14.3: WRT: Overriding region id 15
[    9.618113] iwlwifi 0000:00:14.3: WRT: Overriding region id 16
[    9.618113] iwlwifi 0000:00:14.3: WRT: Overriding region id 18
[    9.618114] iwlwifi 0000:00:14.3: WRT: Overriding region id 19
[    9.618115] iwlwifi 0000:00:14.3: WRT: Overriding region id 20
[    9.618116] iwlwifi 0000:00:14.3: WRT: Overriding region id 21
[    9.618116] iwlwifi 0000:00:14.3: WRT: Overriding region id 28
[    9.618442] iwlwifi 0000:00:14.3: loaded firmware version 46.6b541b68.0 9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
[    9.622151] input: MELFAS MIP4 Touchscreen as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-8/i2c-MLFS0000:00/input/input6
[    9.626701] iTCO_vendor_support: vendor-support=0
[    9.651017] dell_smbios: Unable to run on non-Dell system
[    9.657964] cr50_i2c i2c-GOOG0005:00: cr50 TPM 2.0 (i2c 0x50 irq 114 id 0x28)
[    9.662309] elan_i2c i2c-ELAN0000:00: supply vcc not found, using dummy regulator
[    9.689787] dell_smbios: Unable to run on non-Dell system
[    9.709890] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[    9.737554] iTCO_wdt iTCO_wdt: unable to reset NO_REBOOT flag, device disabled by hardware/BIOS
[    9.737860] ee1004 7-0050: 512 byte EE1004-compliant SPD EEPROM, read-only
[    9.740324] dw-apb-uart.3: ttyS0 at MMIO 0xfe036000 (irq = 34, base_baud = 115200) is a 16550A
[    9.758993] cros_ec_lpcs cros_ec_lpcs.0: couldn't reserve memmap region
[    9.759033] cros_ec_lpcs: probe of cros_ec_lpcs.0 failed with error -16
[    9.773244] elan_i2c i2c-ELAN0000:00: Elan Touchpad: Module ID: 0x00d6, Firmware: 0x0005, Sample: 0x0009, IAP: 0x0001
[    9.773349] input: Elan Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-9/i2c-ELAN0000:00/input/input7
[    9.780012] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops __SCT__tp_func_render_mmio [i915])
[    9.968685] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC236: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    9.968689] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    9.968691] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    9.968692] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    9.968693] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    9.968694] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x19
[    9.968695] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
[    9.977015] iwlwifi 0000:00:14.3: Detected Intel(R) Wireless-AC 9560 160MHz, REV=0x318
[    9.982750] thermal thermal_zone6: failed to read out thermal zone (-61)
[   10.027429] mc: Linux media interface: v0.10
[   10.030715] iwlwifi 0000:00:14.3: base HW address: d0:3c:1f:4b:51:59
[   10.038824] intel_tcc_cooling: Programmable TCC Offset detected
[   10.062835] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8
[   10.062879] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9
[   10.062915] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10
[   10.062949] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input11
[   10.062986] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input12
[   10.063020] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input13
[   10.063054] input: HDA Intel PCH HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input14
[   10.063088] input: HDA Intel PCH HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input15
[   10.098355] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[   10.099248] videodev: Linux video capture interface: v2.00
[   10.100920] iwlwifi 0000:00:14.3 wlp0s20f3: renamed from wlan0
[   10.154372] usb 1-6: Found UVC 1.00 device Integrated_Webcam_HD (0bda:565c)
[   10.159684] input: Integrated_Webcam_HD: Integrate as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/input/input16
[   10.159748] usbcore: registered new interface driver uvcvideo
[   10.820307] i2c_designware i2c_designware.0: controller timed out
[   10.820359] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer failed: -110 (-110)
[   11.548726] Bluetooth: hci0: Waiting for firmware download to complete
[   11.549074] Bluetooth: hci0: Firmware loaded in 1796075 usecs
[   11.549280] Bluetooth: hci0: Waiting for device to boot
[   11.563226] Bluetooth: hci0: Device booted in 13723 usecs
[   11.579296] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
[   11.581248] Bluetooth: hci0: Applying Intel DDC parameters completed
[   11.584234] Bluetooth: hci0: Firmware revision 0.1 build 6 week 12 2021
[   11.644251] Bluetooth: hci0: MSFT filter_enable is already on
[   11.844523] i2c_designware i2c_designware.0: controller timed out
[   11.844635] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer failed: -110 (-110)
[   12.868376] i2c_designware i2c_designware.0: controller timed out
[   12.868488] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer failed: -110 (-110)
[   12.868570] mip4_ts i2c-MLFS0000:00: Failed to read packet info: -110
[   13.598040] udevd[971]: starting version 3.2.10
[   13.600350] udevd[971]: starting eudev-3.2.10
[   14.191093] elogind[982]: New seat seat0.
[   14.191636] elogind[982]: Watching system buttons on /dev/input/event2 (Power Button)
[   14.191668] elogind[982]: Watching system buttons on /dev/input/event1 (Lid Switch)
[   14.191784] elogind[982]: Watching system buttons on /dev/input/event3 (Intel Virtual Buttons)
[   14.192151] elogind[982]: Watching system buttons on /dev/input/event0 (AT Translated Set 2 keyboard)
[   16.409010] elogind[982]: New session 1 of user anon.
[   18.453932] e1000e 0000:00:1f.6 enp0s31f6: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[   18.454003] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s31f6: link becomes ready
[  187.554149] atkbd serio0: Use 'setkeycodes e054 <keycode>' to make it known.
[  188.222768] atkbd serio0: Unknown key released (translated set 2, code 0xd4 on isa0060/serio0).
Guenter Roeck Dec. 21, 2021, 8:35 p.m. UTC | #4
On Tue, Dec 21, 2021 at 11:42 AM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
>
> Dear Guenter, dear Dmitry,
>
>
> Am 21.12.21 um 17:47 schrieb Guenter Roeck:
> > On Mon, Dec 20, 2021 at 1:49 PM Dmitry Torokhov <dtor@chromium.org> wrote:
>
> >> On Mon, Dec 20, 2021 at 1:07 PM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
> >>>
> >>> From: Furquan Shaikh <furquan@google.com>
>
> >>> Google Chromebooks are often built with devices sourced from different
> >>> vendors. These need to be probed. To deal with this, the firmware – in
> >>> this case coreboot – tags such optional devices accordingly – I think
> >>> this is commit fbf2c79b (drivers/i2c/generic: Add config for marking
> >>> device as probed) – and Chromium OS’ Linux kernel has the patch at hand
> >>> applied to act accordingly. Right after the merge, Dmitry created a
> >>> revert, which was actively discussed for two days but wasn’t applied.
> >>> That means, millions of devices shipped with such a firmware and Linux
> >>> kernel. To support these devices with upstream Linux kernel, is there an
> >>> alternative to applying the patch to the Linux kernel, and to support
> >>> the shipped devices?
> >>
> >> *sigh* I should have pushed harder, but I see it managed to
> >> proliferate even into our newer kernels. Not having this patch should
> >> not cause any problems, it can only hurt, because the i2c core has no
> >> idea how to power up and reset the device properly. The only downside
> >> of not having this patch is that we may have devices in sysfs that are
> >> not connected to actual hardware. They do now cause any problems and
> >> is how we have been shipping ARM-based devices where we also dual- and
> >> triple-source components. However if we were to have a device that
> >> switches between several addresses (let's say device in bootloader
> >> mode uses 0x10 address and in normal mode 0x20) this "probing" may
> >> result in device not being detected at all.
>
> On google/sarien, the (upstream) Linux kernel sometimes detects the
> Melfas touchscreen and sometimes not, but in never works. When it’s
> detected, the errors below are still shown.
>
> ```
> $ grep i2c voidlinux-linux-5.13.19-messages.txt
> [    9.392598] i2c i2c-7: 2/2 memory slots populated (from DMI)
> [    9.393108] i2c i2c-7: Successfully instantiated SPD at 0x50
> [    9.622151] input: MELFAS MIP4 Touchscreen as
> /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-8/i2c-MLFS0000:00/input/input6
> [    9.657964] cr50_i2c i2c-GOOG0005:00: cr50 TPM 2.0 (i2c 0x50 irq 114
> id 0x28)
> [    9.662309] elan_i2c i2c-ELAN0000:00: supply vcc not found, using
> dummy regulator
> [    9.773244] elan_i2c i2c-ELAN0000:00: Elan Touchpad: Module ID:
> 0x00d6, Firmware: 0x0005, Sample: 0x0009, IAP: 0x0001
> [    9.773349] input: Elan Touchpad as
> /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-9/i2c-ELAN0000:00/input/input7
> [   10.820307] i2c_designware i2c_designware.0: controller timed out
> [   10.820359] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer
> failed: -110 (-110)
> [   11.844523] i2c_designware i2c_designware.0: controller timed out
> [   11.844635] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer
> failed: -110 (-110)
> [   12.868376] i2c_designware i2c_designware.0: controller timed out
> [   12.868488] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer
> failed: -110 (-110)
> [   12.868570] mip4_ts i2c-MLFS0000:00: Failed to read packet info: -110
> ```
>
> Is that related to the probing stuff?
>

Difficult to say without further testing. I can see two possible
problems: The device may sometimes not be seen because it is powered
off, and/or interrupt handling may not work properly.  You could apply
the patch (commit 11cd1bd03f75 in chromeos-5.15) and see if it
improves the situation. I would also suggest applying commit
b4b55381e5cf ("CHROMIUM: Input: elants_i2c: Default to low level
interrupt for Chromebooks") from chromeos-4.19.

Guenter

> >> If we wanted to do this correctly, coreboot would have to implement
> >> full power and reset control and also add drivers for I2C controllers
> >> to be able to communicate with peripherals, and then adjust _STA
> >> methods to report "not present" when the device is indeed absent. And
> >> note that even in this case we would have issues with "morphing
> >> devices", so coreboot would also need to know how to reset device out
> >> of bootloader mode, and maybe flash firmware so device can work in
> >> normal mode.
>
> What do you mean by “bootloader mode”? coreboot also cannot flash
> anything. That’s up to the payload, and even there support for flashing
> is rare.
>
> Duncan wrote something about the ACPI _STA method idea, that ASL(?) and
> I2C do not go well together.
>
> >> However coreboot does (or did?) not want to add code to handle i2c
> >> controllers, and would like to push this knowledge to the kernel. And
> >> the kernel does know how to handle peripherals properly, but that
> >> knowledge lies in individual drivers, not i2c core.
>
> Excuse my ignorance, can you give an example driver? Does the Melfas
> touchscreen driver (`drivers/input/touchscreen/melfas_mip4.c`) support it?
>
> >> We should remove "linux,probed" from coreboot and not propagate to
> >> newer Chrome OS kernels, and keep it away from upstream.
> >
> > Revert from chromeos-5.15 is at
> > https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3350347.
> > Everyone please feel free to comment there.
>
> Guenther, thank you for your quick response. Note, that neither Furquan,
> nor Aaron, nor Duncan work at Google anymore, so won’t comment.
> Hopefully, others from the Chromium OS/coreboot folks can chime in.
>
>
> Kind regards,
>
> Paul
Dmitry Torokhov Dec. 22, 2021, 1:45 a.m. UTC | #5
On Tue, Dec 21, 2021 at 11:42 AM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
>
> Dear Guenter, dear Dmitry,
>
>
> Am 21.12.21 um 17:47 schrieb Guenter Roeck:
> > On Mon, Dec 20, 2021 at 1:49 PM Dmitry Torokhov <dtor@chromium.org> wrote:
>
> >> On Mon, Dec 20, 2021 at 1:07 PM Paul Menzel <pmenzel@molgen.mpg.de> wrote:
> >>>
> >>> From: Furquan Shaikh <furquan@google.com>
>
> >>> Google Chromebooks are often built with devices sourced from different
> >>> vendors. These need to be probed. To deal with this, the firmware – in
> >>> this case coreboot – tags such optional devices accordingly – I think
> >>> this is commit fbf2c79b (drivers/i2c/generic: Add config for marking
> >>> device as probed) – and Chromium OS’ Linux kernel has the patch at hand
> >>> applied to act accordingly. Right after the merge, Dmitry created a
> >>> revert, which was actively discussed for two days but wasn’t applied.
> >>> That means, millions of devices shipped with such a firmware and Linux
> >>> kernel. To support these devices with upstream Linux kernel, is there an
> >>> alternative to applying the patch to the Linux kernel, and to support
> >>> the shipped devices?
> >>
> >> *sigh* I should have pushed harder, but I see it managed to
> >> proliferate even into our newer kernels. Not having this patch should
> >> not cause any problems, it can only hurt, because the i2c core has no
> >> idea how to power up and reset the device properly. The only downside
> >> of not having this patch is that we may have devices in sysfs that are
> >> not connected to actual hardware. They do now cause any problems and
> >> is how we have been shipping ARM-based devices where we also dual- and
> >> triple-source components. However if we were to have a device that
> >> switches between several addresses (let's say device in bootloader
> >> mode uses 0x10 address and in normal mode 0x20) this "probing" may
> >> result in device not being detected at all.
>
> On google/sarien, the (upstream) Linux kernel sometimes detects the
> Melfas touchscreen and sometimes not, but in never works. When it’s
> detected, the errors below are still shown.
>
> ```
> $ grep i2c voidlinux-linux-5.13.19-messages.txt
> [    9.392598] i2c i2c-7: 2/2 memory slots populated (from DMI)
> [    9.393108] i2c i2c-7: Successfully instantiated SPD at 0x50
> [    9.622151] input: MELFAS MIP4 Touchscreen as
> /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-8/i2c-MLFS0000:00/input/input6
> [    9.657964] cr50_i2c i2c-GOOG0005:00: cr50 TPM 2.0 (i2c 0x50 irq 114
> id 0x28)
> [    9.662309] elan_i2c i2c-ELAN0000:00: supply vcc not found, using
> dummy regulator
> [    9.773244] elan_i2c i2c-ELAN0000:00: Elan Touchpad: Module ID:
> 0x00d6, Firmware: 0x0005, Sample: 0x0009, IAP: 0x0001
> [    9.773349] input: Elan Touchpad as
> /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-9/i2c-ELAN0000:00/input/input7
> [   10.820307] i2c_designware i2c_designware.0: controller timed out
> [   10.820359] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer
> failed: -110 (-110)
> [   11.844523] i2c_designware i2c_designware.0: controller timed out
> [   11.844635] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer
> failed: -110 (-110)
> [   12.868376] i2c_designware i2c_designware.0: controller timed out
> [   12.868488] mip4_ts i2c-MLFS0000:00: mip4_i2c_xfer - i2c_transfer
> failed: -110 (-110)
> [   12.868570] mip4_ts i2c-MLFS0000:00: Failed to read packet info: -110
> ```
>
> Is that related to the probing stuff?

So what happens is that there are Melfas and Elan (i2c-hid)
touchscreens described in DSDT, both sharing the same reset line. So
you get Melfas identified, and then i2c-hid comes along, does not find
anything, and powers off/resets Melfas controller. Unfortunately
coreboot does not implement logic for shared power resources here, so
when I2C core thinks that it is powering off Elan it in fact powers
off an unrelated device.

I wonder if we should offer a language to better describe dual-sourced
components/shared power resources so we would not get into this
situation. I am still curious what powers up the devices in case we
use
i2c_new_scanned_device() path. Is it simply a happenstance? I have a
Sarien with Melfas, I guess I can play with it a bit...

OK, I guess we've built more stuff on top of linux,probed and we will
have to have it if we want to support current Google firmware. We need
to have much stronger wording about what linux,probed property really
means (i.e. we expect the device to be powered up by the firmware,
executing proper power up timing sequence, and not being a "morphing"
device) for this to work reliably.

>
> >> If we wanted to do this correctly, coreboot would have to implement
> >> full power and reset control and also add drivers for I2C controllers
> >> to be able to communicate with peripherals, and then adjust _STA
> >> methods to report "not present" when the device is indeed absent. And
> >> note that even in this case we would have issues with "morphing
> >> devices", so coreboot would also need to know how to reset device out
> >> of bootloader mode, and maybe flash firmware so device can work in
> >> normal mode.
>
> What do you mean by “bootloader mode”?

Modern touch controllers and other peripherals are pretty complex.
They typically have R0 firmware (bootloader) and RW main firmware, and
the controller might end up being in "bootloader" mode if RW firmware
gets corrupted or because of power surge, or something else. Some
controllers (for example Atmel) use different addresses on the bus
when in bootloader mode vs normal mode.

> coreboot also cannot flash
> anything. That’s up to the payload, and even there support for flashing
> is rare.
>
> Duncan wrote something about the ACPI _STA method idea, that ASL(?) and
> I2C do not go well together.

There would need to be arbitration between OS and firmware when
accessing I2C controllers in this case so indeed this would be hard.
Maybe coreboot would have to pre-scan the peripherals before booting
the OS.

>
> >> However coreboot does (or did?) not want to add code to handle i2c
> >> controllers, and would like to push this knowledge to the kernel. And
> >> the kernel does know how to handle peripherals properly, but that
> >> knowledge lies in individual drivers, not i2c core.
>
> Excuse my ignorance, can you give an example driver? Does the Melfas
> touchscreen driver (`drivers/input/touchscreen/melfas_mip4.c`) support it?

Melfas has handling for its reset line, as well as Elan touch
controllers (elants_i2c.c), Atmel (atmel_mxt_ts.c), Raydium, etc.

Thanks,
Dmitry
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/i2c/i2c.txt b/Documentation/devicetree/bindings/i2c/i2c.txt
index b864916e087f..4921ee57f4c1 100644
--- a/Documentation/devicetree/bindings/i2c/i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c.txt
@@ -133,6 +133,11 @@  wants to support one of the below features, it should adapt these bindings.
 - wakeup-source
 	device can be used as a wakeup source.
 
+- linux,probed
+	If this property is present, then the I2C device will be
+	probed before being added using i2c_new_scanned_device, else
+	linux will instantiate the I2C device normally.
+
 Binding may contain optional "interrupts" property, describing interrupts
 used by the device. I2C core will assign "irq" interrupt (or the very first
 interrupt if not using interrupt names) as primary interrupt for the slave.
diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
index 92c1cc07ed46..c970d99e4438 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -254,10 +254,20 @@  static void i2c_acpi_register_device(struct i2c_adapter *adapter,
 				     struct acpi_device *adev,
 				     struct i2c_board_info *info)
 {
+	struct i2c_client *client;
+
 	adev->power.flags.ignore_parent = true;
 	acpi_device_set_enumerated(adev);
 
-	if (IS_ERR(i2c_new_client_device(adapter, info)))
+	if (!acpi_dev_get_property(adev, "linux,probed", ACPI_TYPE_ANY, NULL)) {
+		unsigned short addrs[] = { info->addr, I2C_CLIENT_END };
+
+		client = i2c_new_scanned_device(adapter, info, addrs, NULL);
+	} else {
+		client = i2c_new_client_device(adapter, info);
+	}
+
+	if (IS_ERR(client))
 		adev->power.flags.ignore_parent = false;
 }
 
diff --git a/drivers/i2c/i2c-core-of.c b/drivers/i2c/i2c-core-of.c
index 3ed74aa4b44b..fd375ce38a9e 100644
--- a/drivers/i2c/i2c-core-of.c
+++ b/drivers/i2c/i2c-core-of.c
@@ -75,7 +75,15 @@  static struct i2c_client *of_i2c_register_device(struct i2c_adapter *adap,
 	if (ret)
 		return ERR_PTR(ret);
 
-	client = i2c_new_client_device(adap, &info);
+	/* Allow device property to enable probing before init */
+	if (of_get_property(node, "linux,probed", NULL)) {
+		unsigned short addrs[] = { info.addr, I2C_CLIENT_END };
+
+		client = i2c_new_scanned_device(adap, &info, addrs, NULL);
+	} else {
+		client = i2c_new_client_device(adap, &info);
+	}
+
 	if (IS_ERR(client))
 		dev_err(&adap->dev, "of_i2c: Failure registering %pOF\n", node);