XenevaOS
Loading...
Searching...
No Matches
Functions
virtiopci.c File Reference
#include <pcie.h>
#include <Drivers/virtio.h>
#include <Drivers/uart.h>
#include <Hal/AA64/aa64lowlevel.h>
#include <Mm/pmmngr.h>
#include <Mm/vmmngr.h>
#include <string.h>
#include <_null.h>
Include dependency graph for virtiopci.c:

Functions

bool AuVirtioPCIInit (uint64_t address, int bus, int dev, int func, uint32_t wantedFeaturesLow, struct VirtioPCIDevice *out)
 AuVirtioPCIInit – see Drivers/virtio.h.
 
uint16_t AuVirtioPCISetupQueue (struct VirtioPCIDevice *dev, uint16_t qidx, struct VirtqDesc **outDesc, struct VirtqAvailHdr **outAvail, struct VirtqUsedHdr **outUsed, uint16_t msixVector)
 AuVirtioPCISetupQueue – see Drivers/virtio.h.
 
void AuVirtioPCINotifyQueue (struct VirtioPCIDevice *dev, uint16_t qidx)
 AuVirtioPCINotifyQueue – see Drivers/virtio.h.
 

Detailed Description

BSD 2-Clause License

Copyright (c) 2022-2025, Manas Kamal Choudhury All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Function Documentation

◆ AuVirtioPCIInit()

bool AuVirtioPCIInit ( uint64_t  address,
int  bus,
int  dev,
int  func,
uint32_t  wantedFeaturesLow,
struct VirtioPCIDevice out 
)

AuVirtioPCIInit – see Drivers/virtio.h.

AuVirtioPCIInit – walks the PCI capability list of a modern virtio-pci device, maps its common/notify/isr/device config BARs, resets it and negotiates VIRTIO_F_VERSION_1 plus wantedFeaturesLow (bits 0-31).

◆ AuVirtioPCINotifyQueue()

void AuVirtioPCINotifyQueue ( struct VirtioPCIDevice dev,
uint16_t  qidx 
)

AuVirtioPCINotifyQueue – see Drivers/virtio.h.

AuVirtioPCINotifyQueue – kicks the device for queue qidx.

◆ AuVirtioPCISetupQueue()

uint16_t AuVirtioPCISetupQueue ( struct VirtioPCIDevice dev,
uint16_t  qidx,
struct VirtqDesc **  outDesc,
struct VirtqAvailHdr **  outAvail,
struct VirtqUsedHdr **  outUsed,
uint16_t  msixVector 
)

AuVirtioPCISetupQueue – see Drivers/virtio.h.

AuVirtioPCISetupQueue – selects queue qidx, allocates desc/avail/used rings sized to the device-reported queue size and enables the queue.