projects
/
seabios.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use standard formatting for PCI info during PCI init pass.
[seabios.git]
/
src
/
virtio-blk.c
diff --git
a/src/virtio-blk.c
b/src/virtio-blk.c
index 6b491641a9c9e0fcf8b01f6d8693146e7ffe0ef2..b1274fc62ad36f233a3ee3b0daa51d85f7b8f563 100644
(file)
--- a/
src/virtio-blk.c
+++ b/
src/virtio-blk.c
@@
-97,14
+97,14
@@
process_virtio_op(struct disk_op_s *op)
}
static void
}
static void
-init_virtio_blk(
u16 bdf
)
+init_virtio_blk(
struct pci_device *pci
)
{
{
+ u16 bdf = pci->bdf;
dprintf(1, "found virtio-blk at %x:%x\n", pci_bdf_to_bus(bdf),
pci_bdf_to_dev(bdf));
dprintf(1, "found virtio-blk at %x:%x\n", pci_bdf_to_bus(bdf),
pci_bdf_to_dev(bdf));
- char *desc = malloc_tmphigh(MAXDESCSIZE);
struct virtiodrive_s *vdrive_g = malloc_fseg(sizeof(*vdrive_g));
struct vring_virtqueue *vq = memalign_low(PAGE_SIZE, sizeof(*vq));
struct virtiodrive_s *vdrive_g = malloc_fseg(sizeof(*vdrive_g));
struct vring_virtqueue *vq = memalign_low(PAGE_SIZE, sizeof(*vq));
- if (!vdrive_g || !
desc || !
vq) {
+ if (!vdrive_g || !vq) {
warn_noalloc();
goto fail;
}
warn_noalloc();
goto fail;
}
@@
-151,11
+151,10
@@
init_virtio_blk(u16 bdf)
vdrive_g->drive.pchs.cylinders = cfg.cylinders;
vdrive_g->drive.pchs.heads = cfg.heads;
vdrive_g->drive.pchs.spt = cfg.sectors;
vdrive_g->drive.pchs.cylinders = cfg.cylinders;
vdrive_g->drive.pchs.heads = cfg.heads;
vdrive_g->drive.pchs.spt = cfg.sectors;
- snprintf(desc, MAXDESCSIZE, "Virtio disk PCI:%x:%x",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
- vdrive_g->drive.desc = desc;
+ char *desc = znprintf(MAXDESCSIZE, "Virtio disk PCI:%x:%x",
+ pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
- boot_add_hd(&vdrive_g->drive,
bootprio_find_pci_device(bdf
));
+ boot_add_hd(&vdrive_g->drive,
desc, bootprio_find_pci_device(pci
));
vp_set_status(ioaddr, VIRTIO_CONFIG_S_ACKNOWLEDGE |
VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK);
vp_set_status(ioaddr, VIRTIO_CONFIG_S_ACKNOWLEDGE |
VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK);
@@
-163,7
+162,6
@@
init_virtio_blk(u16 bdf)
fail:
free(vdrive_g);
fail:
free(vdrive_g);
- free(desc);
free(vq);
}
free(vq);
}
@@
-176,12
+174,11
@@
virtio_blk_setup(void)
dprintf(3, "init virtio-blk\n");
dprintf(3, "init virtio-blk\n");
- int bdf, max;
- u32 id = PCI_VENDOR_ID_REDHAT_QUMRANET | (PCI_DEVICE_ID_VIRTIO_BLK << 16);
- foreachpci(bdf, max) {
- u32 v = pci_config_readl(bdf, PCI_VENDOR_ID);
- if (v != id)
+ struct pci_device *pci;
+ foreachpci(pci) {
+ if (pci->vendor != PCI_VENDOR_ID_REDHAT_QUMRANET
+ || pci->device != PCI_DEVICE_ID_VIRTIO_BLK)
continue;
continue;
- init_virtio_blk(
bdf
);
+ init_virtio_blk(
pci
);
}
}
}
}