if .../driver/unbind doesn't exist, then it's already unbound
missing parenthesis inside asserts were wrecking the fd assignments!
assert_perror() is just too convenient, had to force define it.
the IOMMU type can't be set before adding at least one group, can't be set twice, so keep a flag to do it only after the first group.
several typos here and there
keep an address->info dictionary to be able to call bus.map_pci_memory() and bus.set_bus_master() with the device as a parameter.
apps no longer require("pci"), don't have to care what the bus access method it's using.
physical page translation still need this lock