I did some investigation over the weekend and I was able to get more
information about the problem and find a better workaround.

There are 3 devices attaching to `dwiic* at pci0':

dwiic0 at pci0 dev 21 function 0 "Intel 500 Series I2C" rev 0x20: apic 2 int 27

  I have no idea what this one is for, but it keeps sending interrupts
  after resume and that is what is causing the laptop to freeze.
  Disabling this device alone "fixes" suspend/resume for me.

dwiic1 at pci0 dev 21 function 1 "Intel 500 Series I2C" rev 0x20: apic 2 int 40

  This is for some special keyboard keys, like brightness control.

dwiic2 at pci0 dev 21 function 3 "Intel 500 Series I2C" rev 0x20: apic 2 int 30

  And this one is for touchpad.

As a workaround for now, I'm changing `dwiic* at pci*` to attach only to
touchpad, so I can have suspend/resume working without losing the touchpad.

# config -ef /bsd
ukc> find dwiic
226 dwiic* at pci* dev -1 function -1 flags 0x0
448 dwiic* at acpi0 flags 0x0
ukc> change 226
226 dwiic* at pci* dev -1 function -1 flags 0x0
change [n] y
dev [-1] ? 21
function [-1] ? 3
flags [0] ?
226 dwiic* changed
226 dwiic* at pci* dev 0x15 function 3 flags 0x0
ukc> quit

Now it only configures dwiic0 for touchpad:

  "Intel 500 Series I2C" rev 0x20 at pci0 dev 21 function 0 not configured
  "Intel 500 Series I2C" rev 0x20 at pci0 dev 21 function 1 not configured
  dwiic0 at pci0 dev 21 function 3 "Intel 500 Series I2C" rev 0x20: apic 2 int 
30

To make it survive reboots, I added the configuration to
`/etc/bsd.re-config`. Be careful when using this one because of the
hardcoded DevNo.

$ cat /etc/bsd.re-config
change 226
y
21
3
0

I hope this issue can be fixed soon, but at least I now have a fully
functional OpenBSD on my Framework laptop :)

--
Renato

Reply via email to