: 16384);
add_struct(17, p, dev_mb, i);
}
-
+
add_struct(19, p, 0, RamSize >> 20, 0);
if (RamSizeOver4G)
add_struct(19, p, 4096, RamSizeOver4G >> 20, 1);
#include "util.h" // dprintf
#include "pci.h" // foreachpci
#include "config.h" // CONFIG_*
+#include "biosvar.h" // GET_GLOBAL
+#include "pci_ids.h" // PCI_DEVICE_ID_VIRTIO_BLK
+#include "pci_regs.h" // PCI_VENDOR_ID
+#include "boot.h" // add_bcv_internal
#include "virtio-pci.h"
+#include "virtio-ring.h"
#include "virtio-blk.h"
#include "disk.h"
#define VIRTIO_BLK_S_IOERR 1
#define VIRTIO_BLK_S_UNSUPP 2
+struct disk_op_s;
int process_virtio_op(struct disk_op_s *op);
void virtio_blk_setup(void);
#include "virtio-ring.h"
#include "virtio-pci.h"
+#include "config.h" // CONFIG_DEBUG_LEVEL
+#include "util.h" // dprintf
int vp_find_vq(unsigned int ioaddr, int queue_index,
struct vring_virtqueue *vq)
#ifndef _VIRTIO_PCI_H
#define _VIRTIO_PCI_H
+#include "ioport.h" // inl
+
/* A 32-bit r/o bitmask of the features supported by the host */
#define VIRTIO_PCI_HOST_FEATURES 0
outl(0, ioaddr + VIRTIO_PCI_QUEUE_PFN);
}
+struct vring_virtqueue;
int vp_find_vq(unsigned int ioaddr, int queue_index,
struct vring_virtqueue *vq);
#endif /* _VIRTIO_PCI_H_ */
#include "virtio-ring.h"
#include "virtio-pci.h"
+#include "biosvar.h" // GET_GLOBAL
+#include "util.h" // dprintf
#define BUG() do { \
dprintf(1, "BUG: failure at %s:%d/%s()!\n", \
- __FILE__, __LINE__, __FUNCTION__); \
+ __FILE__, __LINE__, __func__); \
while(1); \
} while (0)
#define BUG_ON(condition) do { if (condition) BUG(); } while (0)
#ifndef _VIRTIO_RING_H
#define _VIRTIO_RING_H
+#include "types.h" // u64
+#include "memmap.h" // PAGE_SIZE
+
#define PAGE_SHIFT 12
#define PAGE_MASK (PAGE_SIZE-1)