hv:Rename ptdev to ptirq for some variables and structures

ptdev_remapping_info --> ptirq_remapping_info
ptdev_msi_info --> ptirq_msi_info
ptdev_vpin_source --> ptirq_vpin_source
ptdev_irq_entries --> ptirq_entries
ptdev_entry_bitmaps --> ptirq_entry_bitmaps

v1-->v2:
   still use ptdev_lock instead of ptirq_lock
Tracked-On: #861
Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Mingqiang Chi 2018-11-29 15:26:27 +08:00 committed by Xie, Nanlin
parent 10afa9bbbf
commit 5b43aa8a65
9 changed files with 74 additions and 74 deletions

View File

@ -15,15 +15,15 @@
* @pre: vm must be NULL when lookup by physical sid, otherwise,
* vm must not be NULL when lookup by virtual sid.
*/
static inline struct ptdev_remapping_info *
static inline struct ptirq_remapping_info *
ptdev_lookup_entry_by_sid(uint32_t intr_type,
const union source_id *sid,const struct acrn_vm *vm)
{
uint16_t idx;
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
for (idx = 0U; idx < CONFIG_MAX_PT_IRQ_ENTRIES; idx++) {
entry = &ptdev_irq_entries[idx];
entry = &ptirq_entries[idx];
if (!is_entry_active(entry)) {
continue;
}
@ -39,10 +39,10 @@ ptdev_lookup_entry_by_sid(uint32_t intr_type,
return NULL;
}
static inline struct ptdev_remapping_info *
static inline struct ptirq_remapping_info *
ptdev_lookup_entry_by_vpin(struct acrn_vm *vm, uint8_t virt_pin, bool pic_pin)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
if (pic_pin) {
entry = vm->arch_vm.vpic.vpin_to_pt_entry[virt_pin];
@ -79,7 +79,7 @@ static uint64_t calculate_logical_dest_mask(uint64_t pdmask)
return dest_mask;
}
static void ptdev_build_physical_msi(struct acrn_vm *vm, struct ptdev_msi_info *info,
static void ptdev_build_physical_msi(struct acrn_vm *vm, struct ptirq_msi_info *info,
uint32_t vector)
{
uint64_t vdmask, pdmask, dest_mask;
@ -116,7 +116,7 @@ static void ptdev_build_physical_msi(struct acrn_vm *vm, struct ptdev_msi_info *
}
static union ioapic_rte
ptdev_build_physical_rte(struct acrn_vm *vm, struct ptdev_remapping_info *entry)
ptdev_build_physical_rte(struct acrn_vm *vm, struct ptirq_remapping_info *entry)
{
union ioapic_rte rte;
uint32_t phys_irq = entry->allocated_pirq;
@ -199,10 +199,10 @@ ptdev_build_physical_rte(struct acrn_vm *vm, struct ptdev_remapping_info *entry)
* - if the entry already be added by vm0, then change the owner to current vm
* - if the entry already be added by other vm, return NULL
*/
static struct ptdev_remapping_info *add_msix_remapping(struct acrn_vm *vm,
static struct ptirq_remapping_info *add_msix_remapping(struct acrn_vm *vm,
uint16_t virt_bdf, uint16_t phys_bdf, uint32_t entry_nr)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
DEFINE_MSI_SID(phys_sid, phys_bdf, entry_nr);
DEFINE_MSI_SID(virt_sid, virt_bdf, entry_nr);
@ -252,7 +252,7 @@ static struct ptdev_remapping_info *add_msix_remapping(struct acrn_vm *vm,
static void
remove_msix_remapping(const struct acrn_vm *vm, uint16_t virt_bdf, uint32_t entry_nr)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
DEFINE_MSI_SID(virt_sid, virt_bdf, entry_nr);
entry = ptdev_lookup_entry_by_sid(PTDEV_INTR_MSI, &virt_sid, vm);
@ -279,11 +279,11 @@ remove_msix_remapping(const struct acrn_vm *vm, uint16_t virt_bdf, uint32_t entr
* - if the entry already be added by vm0, then change the owner to current vm
* - if the entry already be added by other vm, return NULL
*/
static struct ptdev_remapping_info *add_intx_remapping(struct acrn_vm *vm, uint8_t virt_pin,
static struct ptirq_remapping_info *add_intx_remapping(struct acrn_vm *vm, uint8_t virt_pin,
uint8_t phys_pin, bool pic_pin)
{
struct ptdev_remapping_info *entry;
enum ptdev_vpin_source vpin_src = pic_pin ? PTDEV_VPIN_PIC : PTDEV_VPIN_IOAPIC;
struct ptirq_remapping_info *entry;
enum ptirq_vpin_source vpin_src = pic_pin ? PTDEV_VPIN_PIC : PTDEV_VPIN_IOAPIC;
DEFINE_IOAPIC_SID(phys_sid, phys_pin, 0);
DEFINE_IOAPIC_SID(virt_sid, virt_pin, vpin_src);
uint32_t phys_irq = pin_to_irq(phys_pin);
@ -346,7 +346,7 @@ static struct ptdev_remapping_info *add_intx_remapping(struct acrn_vm *vm, uint8
static void remove_intx_remapping(struct acrn_vm *vm, uint8_t virt_pin, bool pic_pin)
{
uint32_t phys_irq;
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
if ((!pic_pin && virt_pin >= vioapic_pincount(vm))
|| (pic_pin && virt_pin >= vpic_pincount())) {
@ -382,7 +382,7 @@ static void remove_intx_remapping(struct acrn_vm *vm, uint8_t virt_pin, bool pic
}
static void ptdev_intr_handle_irq(struct acrn_vm *vm,
const struct ptdev_remapping_info *entry)
const struct ptirq_remapping_info *entry)
{
const union source_id *virt_sid = &entry->virt_sid;
switch (virt_sid->intx_id.src) {
@ -452,8 +452,8 @@ void ptdev_softirq(uint16_t pcpu_id)
struct acrn_vm *vm = vcpu->vm;
while (1) {
struct ptdev_remapping_info *entry = ptdev_dequeue_softirq(vm);
struct ptdev_msi_info *msi;
struct ptirq_remapping_info *entry = ptdev_dequeue_softirq(vm);
struct ptirq_msi_info *msi;
if (entry == NULL) {
break;
@ -489,10 +489,10 @@ void ptdev_softirq(uint16_t pcpu_id)
}
void ptdev_intx_ack(struct acrn_vm *vm, uint8_t virt_pin,
enum ptdev_vpin_source vpin_src)
enum ptirq_vpin_source vpin_src)
{
uint32_t phys_irq;
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
bool pic_pin = (vpin_src == PTDEV_VPIN_PIC);
entry = ptdev_lookup_entry_by_vpin(vm, virt_pin, pic_pin);
@ -536,9 +536,9 @@ void ptdev_intx_ack(struct acrn_vm *vm, uint8_t virt_pin,
* user must provide bdf and entry_nr
*/
int ptdev_msix_remap(struct acrn_vm *vm, uint16_t virt_bdf,
uint16_t entry_nr, struct ptdev_msi_info *info)
uint16_t entry_nr, struct ptirq_msi_info *info)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
DEFINE_MSI_SID(virt_sid, virt_bdf, entry_nr);
/*
@ -591,7 +591,7 @@ END:
}
static void activate_physical_ioapic(struct acrn_vm *vm,
struct ptdev_remapping_info *entry)
struct ptirq_remapping_info *entry)
{
union ioapic_rte rte;
uint32_t phys_irq = entry->allocated_pirq;
@ -624,9 +624,9 @@ static void activate_physical_ioapic(struct acrn_vm *vm,
* or vPIC
*/
int ptdev_intx_pin_remap(struct acrn_vm *vm, uint8_t virt_pin,
enum ptdev_vpin_source vpin_src)
enum ptirq_vpin_source vpin_src)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
bool need_switch_vpin_src = false;
DEFINE_IOAPIC_SID(virt_sid, virt_pin, vpin_src);
bool pic_pin = (vpin_src == PTDEV_VPIN_PIC);
@ -732,7 +732,7 @@ END:
int ptdev_add_intx_remapping(struct acrn_vm *vm, uint8_t virt_pin, uint8_t phys_pin,
bool pic_pin)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
spinlock_obtain(&ptdev_lock);
entry = add_intx_remapping(vm, virt_pin, phys_pin, pic_pin);
@ -759,7 +759,7 @@ void ptdev_remove_intx_remapping(struct acrn_vm *vm, uint8_t virt_pin, bool pic_
int ptdev_add_msix_remapping(struct acrn_vm *vm, uint16_t virt_bdf,
uint16_t phys_bdf, uint32_t vector_count)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
uint32_t i;
for (i = 0U; i < vector_count; i++) {

View File

@ -8,31 +8,31 @@
#include <softirq.h>
#include <ptdev.h>
#define PTDEV_BITMAP_ARRAY_SIZE INT_DIV_ROUNDUP(CONFIG_MAX_PT_IRQ_ENTRIES, 64U)
struct ptdev_remapping_info ptdev_irq_entries[CONFIG_MAX_PT_IRQ_ENTRIES];
static uint64_t ptdev_entry_bitmaps[PTDEV_BITMAP_ARRAY_SIZE];
#define PTIRQ_BITMAP_ARRAY_SIZE INT_DIV_ROUNDUP(CONFIG_MAX_PT_IRQ_ENTRIES, 64U)
struct ptirq_remapping_info ptirq_entries[CONFIG_MAX_PT_IRQ_ENTRIES];
static uint64_t ptirq_entry_bitmaps[PTIRQ_BITMAP_ARRAY_SIZE];
spinlock_t ptdev_lock;
bool is_entry_active(const struct ptdev_remapping_info *entry)
bool is_entry_active(const struct ptirq_remapping_info *entry)
{
return atomic_load32(&entry->active) == ACTIVE_FLAG;
}
static inline uint16_t alloc_ptdev_entry_id(void)
{
uint16_t id = (uint16_t)ffz64_ex(ptdev_entry_bitmaps, CONFIG_MAX_PT_IRQ_ENTRIES);
uint16_t id = (uint16_t)ffz64_ex(ptirq_entry_bitmaps, CONFIG_MAX_PT_IRQ_ENTRIES);
while (id < CONFIG_MAX_PT_IRQ_ENTRIES) {
if (!bitmap_test_and_set_lock((id & 0x3FU), &ptdev_entry_bitmaps[id >> 6U])) {
if (!bitmap_test_and_set_lock((id & 0x3FU), &ptirq_entry_bitmaps[id >> 6U])) {
return id;
}
id = (uint16_t)ffz64_ex(ptdev_entry_bitmaps, CONFIG_MAX_PT_IRQ_ENTRIES);
id = (uint16_t)ffz64_ex(ptirq_entry_bitmaps, CONFIG_MAX_PT_IRQ_ENTRIES);
}
return INVALID_PTDEV_ENTRY_ID;
}
static void ptdev_enqueue_softirq(struct ptdev_remapping_info *entry)
static void ptdev_enqueue_softirq(struct ptirq_remapping_info *entry)
{
uint64_t rflags;
@ -50,23 +50,23 @@ static void ptdev_enqueue_softirq(struct ptdev_remapping_info *entry)
static void ptdev_intr_delay_callback(void *data)
{
struct ptdev_remapping_info *entry =
(struct ptdev_remapping_info *) data;
struct ptirq_remapping_info *entry =
(struct ptirq_remapping_info *) data;
ptdev_enqueue_softirq(entry);
}
struct ptdev_remapping_info*
struct ptirq_remapping_info*
ptdev_dequeue_softirq(struct acrn_vm *vm)
{
uint64_t rflags;
struct ptdev_remapping_info *entry = NULL;
struct ptirq_remapping_info *entry = NULL;
spinlock_irqsave_obtain(&vm->softirq_dev_lock, &rflags);
while (!list_empty(&vm->softirq_dev_entry_list)) {
entry = get_first_item(&vm->softirq_dev_entry_list,
struct ptdev_remapping_info, softirq_node);
struct ptirq_remapping_info, softirq_node);
list_del_init(&entry->softirq_node);
@ -85,10 +85,10 @@ ptdev_dequeue_softirq(struct acrn_vm *vm)
return entry;
}
struct ptdev_remapping_info *
struct ptirq_remapping_info *
alloc_entry(struct acrn_vm *vm, uint32_t intr_type)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
uint16_t ptdev_id = alloc_ptdev_entry_id();
if (ptdev_id >= CONFIG_MAX_PT_IRQ_ENTRIES) {
@ -96,8 +96,8 @@ alloc_entry(struct acrn_vm *vm, uint32_t intr_type)
return NULL;
}
entry = &ptdev_irq_entries[ptdev_id];
(void)memset((void *)entry, 0U, sizeof(struct ptdev_remapping_info));
entry = &ptirq_entries[ptdev_id];
(void)memset((void *)entry, 0U, sizeof(struct ptirq_remapping_info));
entry->ptdev_entry_id = ptdev_id;
entry->intr_type = intr_type;
entry->vm = vm;
@ -114,7 +114,7 @@ alloc_entry(struct acrn_vm *vm, uint32_t intr_type)
}
void
release_entry(struct ptdev_remapping_info *entry)
release_entry(struct ptirq_remapping_info *entry)
{
uint64_t rflags;
@ -126,17 +126,17 @@ release_entry(struct ptdev_remapping_info *entry)
list_del_init(&entry->softirq_node);
spinlock_irqrestore_release(&entry->vm->softirq_dev_lock, rflags);
atomic_clear32(&entry->active, ACTIVE_FLAG);
bitmap_clear_nolock((entry->ptdev_entry_id) & 0x3FU, &ptdev_entry_bitmaps[(entry->ptdev_entry_id) >> 6U]);
bitmap_clear_nolock((entry->ptdev_entry_id) & 0x3FU, &ptirq_entry_bitmaps[(entry->ptdev_entry_id) >> 6U]);
}
static void
release_all_entries(const struct acrn_vm *vm)
{
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
uint16_t idx;
for (idx = 0U; idx < CONFIG_MAX_PT_IRQ_ENTRIES; idx++) {
entry = &ptdev_irq_entries[idx];
entry = &ptirq_entries[idx];
if (entry->vm == vm) {
release_entry(entry);
}
@ -146,8 +146,8 @@ release_all_entries(const struct acrn_vm *vm)
/* interrupt context */
static void ptdev_interrupt_handler(__unused uint32_t irq, void *data)
{
struct ptdev_remapping_info *entry =
(struct ptdev_remapping_info *) data;
struct ptirq_remapping_info *entry =
(struct ptirq_remapping_info *) data;
/*
* "interrupt storm" detection & delay intr injection just for UOS
@ -169,7 +169,7 @@ static void ptdev_interrupt_handler(__unused uint32_t irq, void *data)
}
/* active intr with irq registering */
int32_t ptdev_activate_entry(struct ptdev_remapping_info *entry, uint32_t phys_irq)
int32_t ptdev_activate_entry(struct ptirq_remapping_info *entry, uint32_t phys_irq)
{
int32_t retval;
@ -187,7 +187,7 @@ int32_t ptdev_activate_entry(struct ptdev_remapping_info *entry, uint32_t phys_i
}
void
ptdev_deactivate_entry(struct ptdev_remapping_info *entry)
ptdev_deactivate_entry(struct ptirq_remapping_info *entry)
{
uint64_t rflags;
@ -226,10 +226,10 @@ uint32_t get_vm_ptdev_intr_data(const struct acrn_vm *target_vm, uint64_t *buffe
{
uint32_t index = 0U;
uint16_t i;
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
for (i = 0U; i < CONFIG_MAX_PT_IRQ_ENTRIES; i++) {
entry = &ptdev_irq_entries[i];
entry = &ptirq_entries[i];
if (!is_entry_active(entry)) {
continue;
}

View File

@ -902,7 +902,7 @@ static int shell_show_cpu_int(__unused int argc, __unused char **argv)
}
#define PTDEV_INVALID_PIN 0xffU
static void get_entry_info(const struct ptdev_remapping_info *entry, char *type,
static void get_entry_info(const struct ptirq_remapping_info *entry, char *type,
uint32_t *irq, uint32_t *vector, uint64_t *dest, bool *lvl_tm,
uint8_t *pin, uint8_t *vpin, uint32_t *bdf, uint32_t *vbdf)
{
@ -958,7 +958,7 @@ static void get_entry_info(const struct ptdev_remapping_info *entry, char *type,
static void get_ptdev_info(char *str_arg, size_t str_max)
{
char *str = str_arg;
struct ptdev_remapping_info *entry;
struct ptirq_remapping_info *entry;
uint16_t idx;
size_t len, size = str_max;
uint32_t irq, vector;
@ -976,7 +976,7 @@ static void get_ptdev_info(char *str_arg, size_t str_max)
str += len;
for (idx = 0U; idx < CONFIG_MAX_PT_IRQ_ENTRIES; idx++) {
entry = &ptdev_irq_entries[idx];
entry = &ptirq_entries[idx];
if (is_entry_active(entry)) {
get_entry_info(entry, type, &irq, &vector,
&dest, &lvl_tm, &pin, &vpin,

View File

@ -44,7 +44,7 @@ static inline bool msicap_access(struct pci_vdev *vdev, uint32_t offset)
static int32_t vmsi_remap(struct pci_vdev *vdev, bool enable)
{
struct ptdev_msi_info info;
struct ptirq_msi_info info;
union pci_bdf pbdf = vdev->pdev.bdf;
struct acrn_vm *vm = vdev->vpci->vm;
uint32_t capoff = vdev->msi.capoff;

View File

@ -51,7 +51,7 @@ static inline bool msixtable_access(struct pci_vdev *vdev, uint32_t offset)
static int vmsix_remap_entry(struct pci_vdev *vdev, uint32_t index, bool enable)
{
struct msix_table_entry *pentry;
struct ptdev_msi_info info;
struct ptirq_msi_info info;
uint64_t hva;
int ret;

View File

@ -36,7 +36,7 @@
* @pre vm != NULL
*
*/
void ptdev_intx_ack(struct acrn_vm *vm, uint8_t virt_pin, enum ptdev_vpin_source vpin_src);
void ptdev_intx_ack(struct acrn_vm *vm, uint8_t virt_pin, enum ptirq_vpin_source vpin_src);
/**
* @brief MSI/MSI-x remapping for passthrough device.
@ -59,7 +59,7 @@ void ptdev_intx_ack(struct acrn_vm *vm, uint8_t virt_pin, enum ptdev_vpin_source
* @pre info != NULL
*
*/
int ptdev_msix_remap(struct acrn_vm *vm, uint16_t virt_bdf, uint16_t entry_nr, struct ptdev_msi_info *info);
int ptdev_msix_remap(struct acrn_vm *vm, uint16_t virt_bdf, uint16_t entry_nr, struct ptirq_msi_info *info);
/**
@ -81,7 +81,7 @@ int ptdev_msix_remap(struct acrn_vm *vm, uint16_t virt_bdf, uint16_t entry_nr, s
* @pre vm != NULL
*
*/
int ptdev_intx_pin_remap(struct acrn_vm *vm, uint8_t virt_pin, enum ptdev_vpin_source vpin_src);
int ptdev_intx_pin_remap(struct acrn_vm *vm, uint8_t virt_pin, enum ptirq_vpin_source vpin_src);
/**
* @brief Add an interrupt remapping entry for INTx as pre-hold mapping.

View File

@ -56,7 +56,7 @@ struct acrn_vioapic {
union ioapic_rte rtbl[REDIR_ENTRIES_HW];
/* pin_state status bitmap: 1 - high, 0 - low */
uint64_t pin_state[STATE_BITMAP_SIZE];
struct ptdev_remapping_info *vpin_to_pt_entry[VIOAPIC_MAX_PIN];
struct ptirq_remapping_info *vpin_to_pt_entry[VIOAPIC_MAX_PIN];
};
void vioapic_init(struct acrn_vm *vm);

View File

@ -128,7 +128,7 @@ struct acrn_vpic {
struct acrn_vm *vm;
spinlock_t lock;
struct i8259_reg_state i8259[2];
struct ptdev_remapping_info *vpin_to_pt_entry[NR_VPIC_PINS_TOTAL];
struct ptirq_remapping_info *vpin_to_pt_entry[NR_VPIC_PINS_TOTAL];
};
void vpic_init(struct acrn_vm *vm);

View File

@ -14,7 +14,7 @@
#define INVALID_PTDEV_ENTRY_ID 0xffffU
enum ptdev_vpin_source {
enum ptirq_vpin_source {
PTDEV_VPIN_IOAPIC,
PTDEV_VPIN_PIC,
};
@ -39,7 +39,7 @@ union source_id {
};
/* entry per guest virt vector */
struct ptdev_msi_info {
struct ptirq_msi_info {
uint64_t vmsi_addr; /* virt msi_addr */
uint32_t vmsi_data; /* virt msi_data */
uint64_t pmsi_addr; /* phys msi_addr */
@ -52,7 +52,7 @@ struct ptdev_msi_info {
* information related with its vm and msi/intx mapping & interaction nodes
* with interrupt handler and softirq.
*/
struct ptdev_remapping_info {
struct ptirq_remapping_info {
uint16_t ptdev_entry_id;
uint32_t intr_type;
union source_id phys_sid;
@ -62,25 +62,25 @@ struct ptdev_remapping_info {
uint32_t allocated_pirq;
uint32_t polarity; /* 0=active high, 1=active low*/
struct list_head softirq_node;
struct ptdev_msi_info msi;
struct ptirq_msi_info msi;
uint64_t intr_count;
struct hv_timer intr_delay_timer; /* used for delay intr injection */
};
extern struct ptdev_remapping_info ptdev_irq_entries[];
extern struct ptirq_remapping_info ptirq_entries[];
extern spinlock_t ptdev_lock;
bool is_entry_active(const struct ptdev_remapping_info *entry);
bool is_entry_active(const struct ptirq_remapping_info *entry);
void ptdev_softirq(uint16_t pcpu_id);
void ptdev_init(void);
void ptdev_release_all_entries(const struct acrn_vm *vm);
struct ptdev_remapping_info *ptdev_dequeue_softirq(struct acrn_vm *vm);
struct ptdev_remapping_info *alloc_entry(struct acrn_vm *vm, uint32_t intr_type);
void release_entry(struct ptdev_remapping_info *entry);
int32_t ptdev_activate_entry(struct ptdev_remapping_info *entry, uint32_t phys_irq);
void ptdev_deactivate_entry(struct ptdev_remapping_info *entry);
struct ptirq_remapping_info *ptdev_dequeue_softirq(struct acrn_vm *vm);
struct ptirq_remapping_info *alloc_entry(struct acrn_vm *vm, uint32_t intr_type);
void release_entry(struct ptirq_remapping_info *entry);
int32_t ptdev_activate_entry(struct ptirq_remapping_info *entry, uint32_t phys_irq);
void ptdev_deactivate_entry(struct ptirq_remapping_info *entry);
uint32_t get_vm_ptdev_intr_data(const struct acrn_vm *target_vm, uint64_t *buffer, uint32_t buffer_cnt);