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