virtio: Fix running on machines with memory above 0xffffffff
We want to allocate a contiguous memory block anywhere in memory, but expressed this as having to be between 0 and 0xffffffff. This limits us on 64-bit machines, and outright breaks on machines where memory is mapped above that address range. Allow the full address range to be used for this allocation. Sponsored by: Axiado
This commit is contained in:
parent
ed3bf01599
commit
776d3d5924
@ -440,7 +440,7 @@ vtmmio_alloc_virtqueues(device_t dev, int flags, int nvqs,
|
||||
size = vtmmio_read_config_4(sc, VIRTIO_MMIO_QUEUE_NUM_MAX);
|
||||
|
||||
error = virtqueue_alloc(dev, idx, size,
|
||||
VIRTIO_MMIO_VRING_ALIGN, 0xFFFFFFFFUL, info, &vq);
|
||||
VIRTIO_MMIO_VRING_ALIGN, ~(vm_paddr_t)0, info, &vq);
|
||||
if (error) {
|
||||
device_printf(dev,
|
||||
"cannot allocate virtqueue %d: %d\n",
|
||||
|
@ -505,7 +505,7 @@ vtpci_alloc_virtqueues(device_t dev, int flags, int nvqs,
|
||||
size = vtpci_read_config_2(sc, VIRTIO_PCI_QUEUE_NUM);
|
||||
|
||||
error = virtqueue_alloc(dev, idx, size, VIRTIO_PCI_VRING_ALIGN,
|
||||
0xFFFFFFFFUL, info, &vq);
|
||||
~(vm_paddr_t)0, info, &vq);
|
||||
if (error) {
|
||||
device_printf(dev,
|
||||
"cannot allocate virtqueue %d: %d\n", idx, error);
|
||||
|
Loading…
Reference in New Issue
Block a user