aboutsummaryrefslogtreecommitdiffstats
path: root/src/hw/virtio-blk.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-02-03 03:03:15 -0500
committerKevin O'Connor <kevin@koconnor.net>2016-02-03 10:38:20 -0500
commit7b67300f7d9db7dcf855e201db2f0da8f318e40d (patch)
tree140ff3110ad5ac93e0e812b855a6fd55b7633262 /src/hw/virtio-blk.c
parent01a30dc7e38859125f4120e4f10f26af4049daf7 (diff)
downloadseabios-7b67300f7d9db7dcf855e201db2f0da8f318e40d.tar.gz
pci: Implement '%pP' printf handler for 'struct pci_device' pointers
Handle '%pP' format descriptions as a pointer to a 'struct pci_device' and display it in bus:device.function (%02x:%02x.%x) format. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/hw/virtio-blk.c')
-rw-r--r--src/hw/virtio-blk.c39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/hw/virtio-blk.c b/src/hw/virtio-blk.c
index 20a79ebb..cd0cbe90 100644
--- a/src/hw/virtio-blk.c
+++ b/src/hw/virtio-blk.c
@@ -95,10 +95,8 @@ virtio_blk_process_op(struct disk_op_s *op)
static void
init_virtio_blk(struct pci_device *pci)
{
- u16 bdf = pci->bdf;
u8 status = VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER;
- 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 %pP\n", pci);
struct virtiodrive_s *vdrive = malloc_fseg(sizeof(*vdrive));
if (!vdrive) {
warn_noalloc();
@@ -106,12 +104,11 @@ init_virtio_blk(struct pci_device *pci)
}
memset(vdrive, 0, sizeof(*vdrive));
vdrive->drive.type = DTYPE_VIRTIO_BLK;
- vdrive->drive.cntl_id = bdf;
+ vdrive->drive.cntl_id = pci->bdf;
vp_init_simple(&vdrive->vp, pci);
if (vp_find_vq(&vdrive->vp, 0, &vdrive->vq) < 0 ) {
- dprintf(1, "fail to find vq for virtio-blk %x:%x\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
+ dprintf(1, "fail to find vq for virtio-blk %pP\n", pci);
goto fail;
}
@@ -121,8 +118,7 @@ init_virtio_blk(struct pci_device *pci)
u64 version1 = 1ull << VIRTIO_F_VERSION_1;
u64 blk_size = 1ull << VIRTIO_BLK_F_BLK_SIZE;
if (!(features & version1)) {
- dprintf(1, "modern device without virtio_1 feature bit: %x:%x\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
+ dprintf(1, "modern device without virtio_1 feature bit: %pP\n", pci);
goto fail;
}
@@ -131,8 +127,7 @@ init_virtio_blk(struct pci_device *pci)
status |= VIRTIO_CONFIG_S_FEATURES_OK;
vp_set_status(vp, status);
if (!(vp_get_status(vp) & VIRTIO_CONFIG_S_FEATURES_OK)) {
- dprintf(1, "device didn't accept features: %x:%x\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
+ dprintf(1, "device didn't accept features: %pP\n", pci);
goto fail;
}
@@ -145,14 +140,12 @@ init_virtio_blk(struct pci_device *pci)
vdrive->drive.blksize = DISK_SECTOR_SIZE;
}
if (vdrive->drive.blksize != DISK_SECTOR_SIZE) {
- dprintf(1, "virtio-blk %x:%x block size %d is unsupported\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf),
- vdrive->drive.blksize);
+ dprintf(1, "virtio-blk %pP block size %d is unsupported\n",
+ pci, vdrive->drive.blksize);
goto fail;
}
- dprintf(3, "virtio-blk %x:%x blksize=%d sectors=%u\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf),
- vdrive->drive.blksize, (u32)vdrive->drive.sectors);
+ dprintf(3, "virtio-blk %pP blksize=%d sectors=%u\n",
+ pci, vdrive->drive.blksize, (u32)vdrive->drive.sectors);
vdrive->drive.pchs.cylinder =
vp_read(&vp->device, struct virtio_blk_config, cylinders);
@@ -169,14 +162,12 @@ init_virtio_blk(struct pci_device *pci)
cfg.blk_size : DISK_SECTOR_SIZE;
vdrive->drive.sectors = cfg.capacity;
- dprintf(3, "virtio-blk %x:%x blksize=%d sectors=%u\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf),
- vdrive->drive.blksize, (u32)vdrive->drive.sectors);
+ dprintf(3, "virtio-blk %pP blksize=%d sectors=%u\n",
+ pci, vdrive->drive.blksize, (u32)vdrive->drive.sectors);
if (vdrive->drive.blksize != DISK_SECTOR_SIZE) {
- dprintf(1, "virtio-blk %x:%x block size %d is unsupported\n",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf),
- vdrive->drive.blksize);
+ dprintf(1, "virtio-blk %pP block size %d is unsupported\n",
+ pci, vdrive->drive.blksize);
goto fail;
}
vdrive->drive.pchs.cylinder = cfg.cylinders;
@@ -184,9 +175,7 @@ init_virtio_blk(struct pci_device *pci)
vdrive->drive.pchs.sector = cfg.sectors;
}
- char *desc = znprintf(MAXDESCSIZE, "Virtio disk PCI:%x:%x",
- pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
-
+ char *desc = znprintf(MAXDESCSIZE, "Virtio disk PCI:%pP", pci);
boot_add_hd(&vdrive->drive, desc, bootprio_find_pci_device(pci));
status |= VIRTIO_CONFIG_S_DRIVER_OK;