You have an 8 bit bus number and an 8 bit device/function number.
The function number is 3 bits, so if you want to use only function 0
for everything, you are limited to a little under 8192 (2^(8+5)) devices
per PCI domain. PC style hardware cannot easily address multiple PCI
domains, but I think you can have them if you assume that the guest is
using mmconfig.
For using multiple buses, the easiest way could be to have every
device/function on bus 0 be a bridge by itself, so you end up with a
flat number space for the actual devices,
$ lspci -t
[0000:00]-+-00.0-[0000:01]--+-00.0
| +-01.0
| +-02.0
| + ...
| \-3f.0
+-00.1-[0000:02]--+-00.0
| +-01.0
| +-02.0
| + ...
| \-3f.0
+ ...
|
+-3f.6-[0000:ff]--+-00.0
+-01.0
+-02.0
+ ...
\-3f.0
Arnd <><
-