1 #include <linux/virtio.h>
3 #include <linux/virtio_config.h>
4 #include <linux/module.h>
14 return sprintf(buf,
"0x%04x\n", dev->
id.device);
20 return sprintf(buf,
"0x%04x\n", dev->
id.vendor);
26 return sprintf(buf,
"0x%08x\n", dev->
config->get_status(dev));
33 return sprintf(buf,
"virtio:d%08Xv%08X\n",
34 dev->
id.device, dev->
id.vendor);
60 static inline int virtio_id_match(
const struct virtio_device *dev,
79 if (virtio_id_match(dev, &ids[i]))
89 dev->
id.device, dev->
id.vendor);
111 static int virtio_dev_probe(
struct device *_d)
123 device_features = dev->
config->get_features(dev);
130 if (device_features & (1 << f))
136 if (device_features & (1 << i))
139 dev->
config->finalize_features(dev);
141 err = drv->
probe(dev);
153 static int virtio_dev_remove(
struct device *_d)
169 static struct bus_type virtio_bus = {
171 .match = virtio_dev_match,
172 .dev_attrs = virtio_dev_attrs,
173 .uevent = virtio_uevent,
174 .probe = virtio_dev_probe,
175 .remove = virtio_dev_remove,
182 driver->
driver.bus = &virtio_bus;
197 dev->
dev.bus = &virtio_bus;
214 INIT_LIST_HEAD(&dev->
vqs);
235 static int virtio_init(
void)
238 panic(
"virtio bus registration failed");
242 static void __exit virtio_exit(
void)