Changeset View
Changeset View
Standalone View
Standalone View
head/usr.sbin/bhyve/pci_passthru.c
Show First 20 Lines • Show All 289 Lines • ▼ Show 20 Lines | msix_table_read(struct passthru_softc *sc, uint64_t offset, int size) | ||||
uint16_t *src16; | uint16_t *src16; | ||||
uint32_t *src32; | uint32_t *src32; | ||||
uint64_t *src64; | uint64_t *src64; | ||||
uint64_t data; | uint64_t data; | ||||
size_t entry_offset; | size_t entry_offset; | ||||
int index; | int index; | ||||
pi = sc->psc_pi; | pi = sc->psc_pi; | ||||
if (offset >= pi->pi_msix.pba_offset && | if (pi->pi_msix.pba_page != NULL && offset >= pi->pi_msix.pba_offset && | ||||
offset < pi->pi_msix.pba_offset + pi->pi_msix.pba_size) { | offset < pi->pi_msix.pba_offset + pi->pi_msix.pba_size) { | ||||
switch(size) { | switch(size) { | ||||
case 1: | case 1: | ||||
src8 = (uint8_t *)(pi->pi_msix.pba_page + offset - | src8 = (uint8_t *)(pi->pi_msix.pba_page + offset - | ||||
pi->pi_msix.pba_page_offset); | pi->pi_msix.pba_page_offset); | ||||
data = *src8; | data = *src8; | ||||
break; | break; | ||||
case 2: | case 2: | ||||
▲ Show 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | msix_table_write(struct vmctx *ctx, int vcpu, struct passthru_softc *sc, | ||||
uint16_t *dest16; | uint16_t *dest16; | ||||
uint32_t *dest32; | uint32_t *dest32; | ||||
uint64_t *dest64; | uint64_t *dest64; | ||||
size_t entry_offset; | size_t entry_offset; | ||||
uint32_t vector_control; | uint32_t vector_control; | ||||
int index; | int index; | ||||
pi = sc->psc_pi; | pi = sc->psc_pi; | ||||
if (offset >= pi->pi_msix.pba_offset && | if (pi->pi_msix.pba_page != NULL && offset >= pi->pi_msix.pba_offset && | ||||
offset < pi->pi_msix.pba_offset + pi->pi_msix.pba_size) { | offset < pi->pi_msix.pba_offset + pi->pi_msix.pba_size) { | ||||
switch(size) { | switch(size) { | ||||
case 1: | case 1: | ||||
dest8 = (uint8_t *)(pi->pi_msix.pba_page + offset - | dest8 = (uint8_t *)(pi->pi_msix.pba_page + offset - | ||||
pi->pi_msix.pba_page_offset); | pi->pi_msix.pba_page_offset); | ||||
*dest8 = data; | *dest8 = data; | ||||
break; | break; | ||||
case 2: | case 2: | ||||
▲ Show 20 Lines • Show All 552 Lines • Show Last 20 Lines |