X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Flnx_virtio_blk.c;h=0059fb6f8fa6b6eb93b3f70aebd5a9dc4d99f0a0;hb=c551bbb4b8097db14632f43acc27b55b054c13a4;hp=17352ac92a95aeb9b097d4acba796c163d292739;hpb=4eb8163fe76127f9748caa43f8ffad1e4d739bb8;p=palacios.git diff --git a/palacios/src/devices/lnx_virtio_blk.c b/palacios/src/devices/lnx_virtio_blk.c index 17352ac..0059fb6 100644 --- a/palacios/src/devices/lnx_virtio_blk.c +++ b/palacios/src/devices/lnx_virtio_blk.c @@ -27,11 +27,13 @@ #include -#ifndef DEBUG_VIRTIO_BLK + +#ifndef CONFIG_DEBUG_VIRTIO_BLK #undef PrintDebug #define PrintDebug(fmt, args...) #endif + #define BLK_CAPACITY_PORT 20 #define BLK_MAX_SIZE_PORT 28 #define BLK_MAX_SEG_PORT 32 @@ -338,7 +340,8 @@ static int handle_kick(struct vm_device * dev) { return 0; } -static int virtio_io_write(uint16_t port, void * src, uint_t length, struct vm_device * dev) { +static int virtio_io_write(uint16_t port, void * src, uint_t length, void * private_data) { + struct vm_device * dev = (struct vm_device *)private_data; struct virtio_blk_state * virtio = (struct virtio_blk_state *)dev->private_data; int port_idx = port % virtio->io_range_size; @@ -445,7 +448,8 @@ static int virtio_io_write(uint16_t port, void * src, uint_t length, struct vm_d } -static int virtio_io_read(uint16_t port, void * dst, uint_t length, struct vm_device * dev) { +static int virtio_io_read(uint16_t port, void * dst, uint_t length, void * private_data) { + struct vm_device * dev = (struct vm_device *)private_data; struct virtio_blk_state * virtio = (struct virtio_blk_state *)dev->private_data; int port_idx = port % virtio->io_range_size; @@ -611,17 +615,20 @@ static int virtio_init(struct guest_info * vm, void * cfg_data) { bars[i].type = PCI_BAR_NONE; } + PrintDebug("Virtio-BLK io_range_size = %d\n", virtio_state->io_range_size); + bars[0].type = PCI_BAR_IO; bars[0].default_base_port = -1; bars[0].num_ports = virtio_state->io_range_size; bars[0].io_read = virtio_io_read; bars[0].io_write = virtio_io_write; + bars[0].private_data = dev; pci_dev = v3_pci_register_device(pci_bus, PCI_STD_DEVICE, 0, PCI_AUTO_DEV_NUM, 0, "LNX_VIRTIO_BLK", bars, - NULL, NULL, NULL, dev); + NULL, NULL, NULL, dev, NULL); if (!pci_dev) { PrintError("Could not register PCI Device\n");