History

virtio_mmio: generation support

virtio_mmio currently lacks generation support which makes multi-byte field access racy. Fix by getting the value at offset 0xfc for version 2 devices. Nothing we can do for version 1, so return generation id 0.

Michael S. Tsirkin committed 11 years ago

Commit 87e7bf11 parent 71e4b8b1 file · +11 −0Browse files

Unified · Split

drivers/virtio/virtio_mmio.c+11−0
@@ -174,6 +174,16 @@ static void vm_set(struct virtio_device *vdev, unsigned offset, · 173 unmodified lines
174174 writeb(ptr[i], vm_dev->base + VIRTIO_MMIO_CONFIG + offset + i);
175175 }
176176
177+static u32 vm_generation(struct virtio_device *vdev)
178+{
179+ struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
180+
181+ if (vm_dev->version == 1)
182+ return 0;
183+ else
184+ return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION);
185+}
186+
177187 static u8 vm_get_status(struct virtio_device *vdev)
178188 {
179189 struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
@@ -440,6 +450,7 @@ static const char *vm_bus_name(struct virtio_device *vdev) · 260 unmodified lines
440450 static const struct virtio_config_ops virtio_mmio_config_ops = {
441451 .get = vm_get,
442452 .set = vm_set,
453+ .generation = vm_generation,
443454 .get_status = vm_get_status,
444455 .set_status = vm_set_status,
445456 .reset = vm_reset,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t