On Sat, Aug 12, 2023 at 01:12:26PM +0000, Miod Vallat wrote:
> > On Sat, Aug 12, 2023 at 08:00:48AM +0000, Miod Vallat wrote:
> > > I have had a look at your diff and I think it's decent enough to go in
> > > after some polishing.
> > > 
> > > Can Wacom tablet users try this cleaned up diff?
> > 
> > Hi,
> > 
> > My WACOM tablet stopped working with this, here is a dmesg with the patch 
> > and
> > usbdevs -v output.  Let me know if there is any new patches I can test.
> > 
> > As you can see it doesn't even attach like it should (from the dmesg).
> 
> Thanks for reporting this. The changes in uhidev have been a bit too
> aggressive indeed.
> 
> Does this new version of the diff help? Only uhidev.c differs.

Hi!

I got an instant panic after attach of uwacom0.  Since I don't have a camera
nor do I have panic console access on this macbook pro because the keyboard is
USB, I wrote it down on 2 post-it notes.  Let me see if this helps you any:

uvm_fault(,,,)->e
pagefault trap code 0
stopped at config_search 0x100 cmpq %rax, 0x18(%r14)
...
config_search +0x100
config_found_sm +0x36
hidms_attach +0xe3
uwacom_attach +0x15c
config_attach +0x1f4

Now I believe there is offsets that only work on my compilation so I'll try to
get you some object dumps (objdump -D):

uwacom_attach:

00000000000000e0 <uwacom_attach>:
  e0:   f3 0f 1e fa             endbr64 
  e4:   4c 8b 1d 00 00 00 00    mov    0(%rip),%r11        # eb 
<uwacom_attach+0xb>
  eb:   4c 33 1c 24             xor    (%rsp),%r11
  ef:   55                      push   %rbp
  f0:   48 89 e5                mov    %rsp,%rbp
  f3:   57                      push   %rdi
  f4:   56                      push   %rsi
  f5:   52                      push   %rdx
  f6:   57                      push   %rdi
  f7:   41 53                   push   %r11
  f9:   41 57                   push   %r15
  fb:   41 56                   push   %r14
  fd:   41 55                   push   %r13
  ff:   41 54                   push   %r12
 101:   48 83 ec 18             sub    $0x18,%rsp
 105:   49 89 d4                mov    %rdx,%r12
 108:   49 89 f7                mov    %rsi,%r15
 10b:   4c 8d 76 78             lea    0x78(%rsi),%r14
 10f:   48 8b 02                mov    (%rdx),%rax
 112:   48 c7 46 60 00 00 00    movq   $0x0,0x60(%rsi)
 119:   00 
 11a:   48 8b 4a 08             mov    0x8(%rdx),%rcx
 11e:   48 89 4e 50             mov    %rcx,0x50(%rsi)
 122:   48 8b 40 18             mov    0x18(%rax),%rax
 126:   48 89 46 48             mov    %rax,0x48(%rsi)
 12a:   8a 42 10                mov    0x10(%rdx),%al
 12d:   88 46 58                mov    %al,0x58(%rsi)
 130:   48 8b 42 08             mov    0x8(%rdx),%rax
 134:   48 8b 78 48             mov    0x48(%rax),%rdi
 138:   8b 70 58                mov    0x58(%rax),%esi
 13b:   31 d2                   xor    %edx,%edx
 13d:   31 c9                   xor    %ecx,%ecx
 13f:   e8 00 00 00 00          callq  144 <uwacom_attach+0x64>
 144:   49 8b 7c 24 08          mov    0x8(%r12),%rdi
 149:   48 8d 75 a8             lea    0xffffffffffffffa8(%rbp),%rsi
 14d:   48 8d 55 b4             lea    0xffffffffffffffb4(%rbp),%rdx
 151:   e8 00 00 00 00          callq  156 <uwacom_attach+0x76>
 156:   45 0f b6 6c 24 10       movzbl 0x10(%r12),%r13d
 15c:   48 8b 7d a8             mov    0xffffffffffffffa8(%rbp),%rdi
 160:   8b 75 b4                mov    0xffffffffffffffb4(%rbp),%esi
 163:   31 d2                   xor    %edx,%edx
...


hidms_attach:

0000000000000ca0 <hidms_attach>:
     ca0:       f3 0f 1e fa             endbr64 
     ca4:       4c 8b 1d 00 00 00 00    mov    0(%rip),%r11        # cab 
<hidms_attach+0xb>
     cab:       4c 33 1c 24             xor    (%rsp),%r11
     caf:       55                      push   %rbp
     cb0:       48 89 e5                mov    %rsp,%rbp
     cb3:       57                      push   %rdi
     cb4:       56                      push   %rsi
     cb5:       41 53                   push   %r11
     cb7:       41 57                   push   %r15
     cb9:       41 56                   push   %r14
     cbb:       48 83 ec 18             sub    $0x18,%rsp
     cbf:       49 89 f7                mov    %rsi,%r15
     cc2:       49 89 fe                mov    %rdi,%r14
     cc5:       8b 77 18                mov    0x18(%rdi),%esi
     cc8:       83 fe 01                cmp    $0x1,%esi
     ccb:       48 c7 c0 00 00 00 00    mov    $0x0,%rax
     cd2:       48 87 d0                xchg   %rdx,%rax
     cd5:       48 c7 c0 00 00 00 00    mov    $0x0,%rax
     cdc:       48 87 d0                xchg   %rdx,%rax
     cdf:       48 0f 44 d0             cmove  %rax,%rdx
     ce3:       48 c7 c7 00 00 00 00    mov    $0x0,%rdi
     cea:       31 c0                   xor    %eax,%eax
     cec:       e8 00 00 00 00          callq  cf1 <hidms_attach+0x51>
     cf1:       41 8b 46 14             mov    0x14(%r14),%eax
     cf5:       83 e0 0a                and    $0xa,%eax
     cf8:       83 f8 02                cmp    $0x2,%eax
     cfb:       74 13                   je     d10 <hidms_attach+0x70>
     cfd:       83 f8 0a                cmp    $0xa,%eax
     d00:       74 17                   je     d19 <hidms_attach+0x79>
     d02:       83 f8 08                cmp    $0x8,%eax
     d05:       75 20                   jne    d27 <hidms_attach+0x87>
     d07:       48 c7 c7 00 00 00 00    mov    $0x0,%rdi
     d0e:       eb 10                   jmp    d20 <hidms_attach+0x80>
     d10:       48 c7 c7 00 00 00 00    mov    $0x0,%rdi
     d17:       eb 07                   jmp    d20 <hidms_attach+0x80>
     d19:       48 c7 c7 00 00 00 00    mov    $0x0,%rdi
     d20:       31 c0                   xor    %eax,%eax
     d22:       e8 00 00 00 00          callq  d27 <hidms_attach+0x87>
     d27:       41 8b 46 14             mov    0x14(%r14),%eax
     d2b:       a9 00 01 00 00          test   $0x100,%eax
     d30:       75 7e                   jne    db0 <hidms_attach+0x110>
     d32:       a9 00 02 00 00          test   $0x200,%eax
     d37:       0f 85 90 00 00 00       jne    dcd <hidms_attach+0x12d>
     d3d:       a9 00 04 00 00          test   $0x400,%eax
     d42:       74 0e                   je     d52 <hidms_attach+0xb2>
     d44:       48 c7 c7 00 00 00 00    mov    $0x0,%rdi
     d4b:       31 c0                   xor    %eax,%eax
     d4d:       e8 00 00 00 00          callq  d52 <hidms_attach+0xb2>
     d52:       48 c7 c7 00 00 00 00    mov    $0x0,%rdi
     d59:       31 c0                   xor    %eax,%eax
     d5b:       e8 00 00 00 00          callq  d60 <hidms_attach+0xc0>
     d60:       4c 89 7d c8             mov    %r15,0xffffffffffffffc8(%rbp)
     d64:       49 8b 3e                mov    (%r14),%rdi
     d67:       48 89 7d d0             mov    %rdi,0xffffffffffffffd0(%rbp)
     d6b:       48 8d 75 c8             lea    0xffffffffffffffc8(%rbp),%rsi
     d6f:       48 87 d0                xchg   %rdx,%rax
     d72:       48 c7 c0 00 00 00 00    mov    $0x0,%rax
     d79:       48 87 d0                xchg   %rdx,%rax
     d7c:       31 c9                   xor    %ecx,%ecx
     d7e:       e8 00 00 00 00          callq  d83 <hidms_attach+0xe3>
     d83:       49 89 46 08             mov    %rax,0x8(%r14)
     d87:       48 83 c4 18             add    $0x18,%rsp
    d8b:       41 5e                   pop    %r14
     d8d:       41 5f                   pop    %r15
     d8f:       41 5b                   pop    %r11
     d91:       c9                      leaveq 
     d92:       4c 33 1c 24             xor    (%rsp),%r11
     d96:       4c 3b 1d 00 00 00 00    cmp    0(%rip),%r11        # d9d 
<hidms_attach+0xfd>
     d9d:       74 10                   je     daf <hidms_attach+0x10f>
     d9f:       cc                      int3   
     da0:       cc                      int3   
     da1:       cc                      int3   
     da2:       cc                      int3   
     da3:       cc                      int3   
     da4:       cc                      int3   
     da5:       cc                      int3   
     da6:       cc                      int3   
     da7:       cc                      int3   
     da8:       cc                      int3   
     da9:       cc                      int3   
     daa:       cc                      int3   
     dab:       cc                      int3   
     dac:       cc                      int3   
...

config_found_sm:

00000000000007d0 <config_found_sm>:
     7d0:       f3 0f 1e fa             endbr64 
     7d4:       4c 8b 1d 00 00 00 00    mov    0(%rip),%r11        # 7db 
<config_found_sm+0xb>
     7db:       4c 33 1c 24             xor    (%rsp),%r11
     7df:       55                      push   %rbp
     7e0:       48 89 e5                mov    %rsp,%rbp
     7e3:       57                      push   %rdi
     7e4:       56                      push   %rsi
     7e5:       52                      push   %rdx
     7e6:       51                      push   %rcx
     7e7:       41 53                   push   %r11
     7e9:       41 57                   push   %r15
     7eb:       41 56                   push   %r14
     7ed:       41 54                   push   %r12
     7ef:       49 89 d6                mov    %rdx,%r14
     7f2:       49 89 f7                mov    %rsi,%r15
     7f5:       49 89 fc                mov    %rdi,%r12
     7f8:       48 89 cf                mov    %rcx,%rdi
     7fb:       4c 89 e6                mov    %r12,%rsi
     7fe:       4c 89 fa                mov    %r15,%rdx
     801:       e8 00 00 00 00          callq  806 <config_found_sm+0x36>
     806:       48 85 c0                test   %rax,%rax
   809:       74 1a                   je     825 <config_found_sm+0x55>
     80b:       4c 89 e7                mov    %r12,%rdi
     80e:       48 89 c6                mov    %rax,%rsi
     811:       4c 89 fa                mov    %r15,%rdx
     814:       4c 89 f1                mov    %r14,%rcx
     817:       41 5c                   pop    %r12
     819:       41 5e                   pop    %r14
     81b:       41 5f                   pop    %r15
     81d:       41 5b                   pop    %r11
     81f:       c9                      leaveq 
...


config_search:

0000000000000070 <config_search>:
      70:       f3 0f 1e fa             endbr64 
      74:       4c 8b 1d 00 00 00 00    mov    0(%rip),%r11        # 7b <config_
search+0xb>
      7b:       4c 33 1c 24             xor    (%rsp),%r11
      7f:       55                      push   %rbp
      80:       48 89 e5                mov    %rsp,%rbp
      83:       57                      push   %rdi
      84:       56                      push   %rsi
      85:       52                      push   %rdx
      86:       57                      push   %rdi
      87:       41 53                   push   %r11
      89:       41 57                   push   %r15
      8b:       41 56                   push   %r14
      8d:       41 55                   push   %r13
      8f:       41 54                   push   %r12
      91:       53                      push   %rbx
      92:       48 83 ec 30             sub    $0x30,%rsp
      96:       49 89 f6                mov    %rsi,%r14
      99:       48 89 7d 88             mov    %rdi,0xffffffffffffff88(%rbp)
      9d:       48 89 75 90             mov    %rsi,0xffffffffffffff90(%rbp)
     a1:       48 c7 45 98 00 00 00    movq   $0x0,0xffffffffffffff98(%rbp)
      a8:       00 
      a9:       48 89 55 a0             mov    %rdx,0xffffffffffffffa0(%rbp)
      ad:       48 85 f6                test   %rsi,%rsi
      b0:       74 10                   je     c2 <config_search+0x52>
      b2:       49 8b 46 18             mov    0x18(%r14),%rax
      b6:       48 8b 40 08             mov    0x8(%rax),%rax
      ba:       8b 40 14                mov    0x14(%rax),%eax
      bd:       83 e0 01                and    $0x1,%eax
      c0:       eb 02                   jmp    c4 <config_search+0x54>
      c2:       31 c0                   xor    %eax,%eax
      c4:       89 45 a8                mov    %eax,0xffffffffffffffa8(%rbp)
      c7:       c7 45 ac 00 00 00 00    movl   $0x0,0xffffffffffffffac(%rbp)
      ce:       48 8b 05 00 00 00 00    mov    0(%rip),%rax        # d5 
<config_search+0x65>
      d5:       48 85 c0                test   %rax,%rax
      d8:       0f 84 a5 00 00 00       je     183 <config_search+0x113>
      de:       49 c7 c7 00 00 00 00    mov    $0x0,%r15
      e5:       4c 8d 65 88             lea    0xffffffffffffff88(%rbp),%r12
      e9:       41 bd 1a 00 00 00       mov    $0x1a,%r13d
      ef:       eb 1c                   jmp    10d <config_search+0x9d>
    f1:       cc                      int3   
      f2:       cc                      int3   
      f3:       cc                      int3   
      f4:       cc                      int3   
      f5:       cc                      int3   
      f6:       cc                      int3   
      f7:       cc                      int3   
      f8:       cc                      int3   
      f9:       cc                      int3   
      fa:       cc                      int3   
      fb:       cc                      int3   
      fc:       cc                      int3   
      fd:       cc                      int3   
      fe:       cc                      int3   
      ff:       cc                      int3   
     100:       49 8b 47 40             mov    0x40(%r15),%rax
     104:       49 83 c7 38             add    $0x38,%r15
     108:       48 85 c0                test   %rax,%rax
     10b:       74 76                   je     183 <config_search+0x113>
     10d:       41 0f b7 4f 12          movzwl 0x12(%r15),%ecx
     112:       66 83 f9 04             cmp    $0x4,%cx
  116:       77 06                   ja     11e <config_search+0xae>
     118:       41 0f a3 cd             bt     %ecx,%r13d
     11c:       72 e2                   jb     100 <config_search+0x90>
     11e:       f6 05 00 00 00 00 02    testb  $0x2,0(%rip)        # 125 
<config_search+0xb5>
     125:       74 11                   je     138 <config_search+0xc8>
     127:       f6 40 14 02             testb  $0x2,0x14(%rax)
     12b:       75 d3                   jne    100 <config_search+0x90>
     12d:       8b 40 10                mov    0x10(%rax),%eax
     130:       83 c0 fd                add    $0xfffffffffffffffd,%eax
     133:       83 f8 02                cmp    $0x2,%eax
     136:       72 c8                   jb     100 <config_search+0x90>
     138:       49 8b 5f 28             mov    0x28(%r15),%rbx
     13c:       0f b7 03                movzwl (%rbx),%eax
     13f:       66 85 c0                test   %ax,%ax
     142:       78 bc                   js     100 <config_search+0x90>
     144:       48 87 d8                xchg   %rbx,%rax
     147:       48 83 c0 02             add    $0x2,%rax
     14b:       48 87 d8                xchg   %rbx,%rax
     14e:       eb 12                   jmp    162 <config_search+0xf2>
     150:       0f b7 03                movzwl (%rbx),%eax
     153:       48 87 d8                xchg   %rbx,%rax
     156:       48 83 c0 02             add    $0x2,%rax
     15a:       48 87 d8                xchg   %rbx,%rax
     15d:       66 85 c0                test   %ax,%ax
     160:       78 9e                   js     100 <config_search+0x90>
     162:       0f b7 c0                movzwl %ax,%eax
     165:       48 6b c0 38             imul   $0x38,%rax,%rax
     169:       48 8d 80 00 00 00 00    lea    0x0(%rax),%rax
     170:       49 39 46 18             cmp    %rax,0x18(%r14)
     174:       75 da                   jne    150 <config_search+0xe0>
     176:       4c 89 e7                mov    %r12,%rdi
     179:       4c 89 fe                mov    %r15,%rsi
     17c:       e8 6f 00 00 00          callq  1f0 <mapply>
     181:       eb cd                   jmp    150 <config_search+0xe0>
     183:       83 3d 00 00 00 00 00    cmpl   $0x0,0(%rip)        # 18a 
<config_search+0x11a>
     18a:       4c 8b 75 98             mov    0xffffffffffffff98(%rbp),%r14
     18e:       74 3d                   je     1cd <config_search+0x15d>
     190:       4d 85 f6                test   %r14,%r14



Best Regards,
-peter

Reply via email to