hv: ptdev: move softirq_dev_entry_list from vm structure to per_cpu region

Using per_cpu list to record ptdev interrupts is more reasonable than
recording them per-vm. It makes dispatching such interrupts more easier
as we now do it in softirq which happens following interrupt context of
each pcpu.

Tracked-On: #3663
Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Shuo A Liu
2019-09-03 11:50:01 +08:00
committed by wenlingz
parent 2cc45534d6
commit 4742d1c747
7 changed files with 18 additions and 22 deletions

View File

@@ -143,8 +143,6 @@ struct acrn_vm {
uint8_t vrtc_offset;
spinlock_t softirq_dev_lock;
struct list_head softirq_dev_entry_list;
uint64_t intr_inject_delay_delta; /* delay of intr injection */
} __aligned(PAGE_SIZE);

View File

@@ -51,6 +51,7 @@ struct per_cpu_region {
uint32_t lapic_ldr;
uint32_t softirq_servicing;
struct smp_call_info_data smp_call_info;
struct list_head softirq_dev_entry_list;
#ifdef PROFILING_ON
struct profiling_info_wrapper profiling_info;
#endif

View File

@@ -154,7 +154,7 @@ void ptirq_softirq(uint16_t pcpu_id);
void ptdev_init(void);
void ptdev_release_all_entries(const struct acrn_vm *vm);
struct ptirq_remapping_info *ptirq_dequeue_softirq(struct acrn_vm *vm);
struct ptirq_remapping_info *ptirq_dequeue_softirq(uint16_t pcpu_id);
struct ptirq_remapping_info *ptirq_alloc_entry(struct acrn_vm *vm, uint32_t intr_type);
void ptirq_release_entry(struct ptirq_remapping_info *entry);
int32_t ptirq_activate_entry(struct ptirq_remapping_info *entry, uint32_t phys_irq);