Skip to content

Commit b5082c9

Browse files
trimpimalex-ab
authored andcommitted
usb_host: test for client restarts
This test restarts the usb_hid client in a loop. Issue genodelabs#5500
1 parent dade21c commit b5082c9

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
#
2+
# USB test for client disconnect / reconnect.
3+
#
4+
5+
assert [expr [have_spec x86] || [have_spec arm_v8a]]
6+
7+
if {[have_spec linux]} {
8+
puts "Run script does not support Linux."
9+
exit 0
10+
}
11+
12+
create_boot_directory
13+
import_from_depot [depot_user]/src/[base_src] \
14+
[depot_user]/pkg/test_usb_host-[board] \
15+
[depot_user]/src/dynamic_rom \
16+
[depot_user]/src/init \
17+
[depot_user]/src/report_rom \
18+
[depot_user]/src/usb_hid \
19+
20+
build { server/event_dump }
21+
22+
install_config {
23+
<config verbose="no">
24+
<parent-provides>
25+
<service name="ROM"/>
26+
<service name="IRQ"/>
27+
<service name="IO_MEM"/>
28+
<service name="IO_PORT"/>
29+
<service name="PD"/>
30+
<service name="RM"/>
31+
<service name="CPU"/>
32+
<service name="LOG"/>
33+
</parent-provides>
34+
35+
<default caps="100"/>
36+
37+
<start name="timer">
38+
<resource name="RAM" quantum="1M"/>
39+
<provides><service name="Timer"/></provides>
40+
<route>
41+
<any-service> <parent/> </any-service>
42+
</route>
43+
</start>
44+
45+
<start name="report_rom">
46+
<resource name="RAM" quantum="1M"/>
47+
<provides> <service name="Report"/> <service name="ROM"/> </provides>
48+
<config verbose="no">
49+
<default-policy report="usb -> usb -> devices"/>
50+
</config>
51+
<route>
52+
<any-service> <parent/> </any-service>
53+
</route>
54+
</start>
55+
56+
<start name="usb" caps="1200" managing_system="yes">
57+
<binary name="init"/>
58+
<resource name="RAM" quantum="32M"/>
59+
<provides> <service name="Usb"/> </provides>
60+
<route>
61+
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
62+
<service name="Timer"> <child name="timer"/> </service>
63+
<service name="Report"> <child name="report_rom"/> </service>
64+
<any-service> <parent/> </any-service>
65+
</route>
66+
</start>
67+
68+
<start name="usb_hid" caps="580">
69+
<binary name="init"/>
70+
<resource name="RAM" quantum="21M"/>
71+
<route>
72+
<service name="Event"> <child name="event_dump"/> </service>
73+
<service name="ROM" label="config"> <child name="dynamic_rom" label="hid_init"/> </service>
74+
<service name="ROM" label="report"> <child name="report_rom"/> </service>
75+
<service name="Timer"> <child name="timer"/> </service>
76+
<service name="Usb"> <child name="usb"/> </service>
77+
<any-service> <parent/> </any-service>
78+
</route>
79+
</start>
80+
81+
<start name="dynamic_rom">
82+
<resource name="RAM" quantum="4M"/>
83+
<provides> <service name="ROM"/> </provides>
84+
<config verbose="no">
85+
<rom name="hid_init">
86+
<inline>
87+
<config verbose="no">
88+
<parent-provides>
89+
<service name="ROM"/>
90+
<service name="IRQ"/>
91+
<service name="IO_MEM"/>
92+
<service name="IO_PORT"/>
93+
<service name="PD"/>
94+
<service name="RM"/>
95+
<service name="CPU"/>
96+
<service name="LOG"/>
97+
</parent-provides>
98+
<default caps="100"/>
99+
</config>
100+
</inline>
101+
<sleep milliseconds="8000" />
102+
<inline>
103+
<config verbose="no">
104+
<parent-provides>
105+
<service name="CPU"/>
106+
<service name="Event"/>
107+
<service name="LOG"/>
108+
<service name="PD"/>
109+
<service name="RM"/>
110+
<service name="ROM"/>
111+
<service name="Report"/>
112+
<service name="Timer"/>
113+
<service name="Usb"/>
114+
</parent-provides>
115+
<default caps="100"/>
116+
<start name="usb_hid" caps="180">
117+
<resource name="RAM" quantum="11M"/>
118+
<config/>
119+
<route>
120+
<any-service> <parent/> </any-service>
121+
</route>
122+
</start>
123+
</config>
124+
</inline>
125+
<sleep milliseconds="8000"/>
126+
</rom>
127+
128+
</config>
129+
<route>
130+
<service name="Timer"> <child name="timer"/> </service>
131+
<any-service> <parent/> </any-service>
132+
</route>
133+
</start>
134+
135+
<start name="event_dump">
136+
<resource name="RAM" quantum="1M"/>
137+
<provides> <service name="Event"/> </provides>
138+
<config/>
139+
<route>
140+
<any-service> <parent/> </any-service>
141+
</route>
142+
</start>
143+
144+
</config>}
145+
146+
#
147+
# Define USB host controller config
148+
#
149+
set fd [open [run_dir]/genode/usb_host.config w]
150+
puts $fd {
151+
<config bios_handoff="yes">
152+
<report devices="yes"/>
153+
<policy label_prefix="usb_hid"> <device class="0x3"/> </policy>
154+
</config>}
155+
close $fd
156+
157+
# create simple system state ROM
158+
if { [have_spec arm_v8a] } {
159+
set fd [open [run_dir]/genode/system w]
160+
puts $fd { <system state=""/> }
161+
close $fd
162+
}
163+
164+
build_boot_image [build_artifacts]
165+
166+
append qemu_args " -device nec-usb-xhci,id=xhci "
167+
append qemu_args " -device usb-kbd,bus=xhci.0 "
168+
append qemu_args " -device usb-mouse,bus=xhci.0 "
169+
append qemu_args " -display sdl "
170+
171+
run_genode_until forever

0 commit comments

Comments
 (0)