|
|
|
|
|
|
|
|
|
|
xen-devel
RE: [Xen-devel] use of struct hvm_mirq_dpci_mapping.gmsi vs. HVM_IRQ_DPC
>>
>> I'm largely asking because I think struct hvm_mirq_dpci_mapping.dom
>> and .digl_list could actually overlay .gmsi, as much as struct
>> hvm_irq_dpci.hvm_timer could actually rather be folded into struct
>> hvm_mirq_dpci_mapping (and then also overlay .gmsi). The overlay
>> distinction bit would, based on initialization, be HVM_IRQ_DPCI_GUEST_MSI,
>> but according to use it wouldn't be clear which of the two
>> HVM_IRQ_DPCI_*_MSI bits is actually the correct one.
>>
Jan, sorry for the late reply. I was out of the office in the past week.
Are you proposing the following data structure change?
struct hvm_mirq_dpci_mapping {
uint32_t flags;
int pending;
union {
struct timer *hvm_timer;
struct list_head_digl_list;
struct domain *dom;
struct hvm_gmsi_info gmsi;
};
}
>> Having a single structure only would make it a lot easier to
>> convert struct hvm_mirq_dpci_mapping * in struct hvm_irq_dpci to
>> a sparse struct hvm_mirq_dpci_mapping ** (populating slots only
>> as they get used), thus shrinking the currently two d->nr_pirqs
>> sized array allocations in pt_irq_create_bind_vtd() to a single one
>> with only pointer size array elements (allowing up to about 512
>> domain pirqs rather than currently slightly above 80 without
>> exceeding PAGE_SIZE on allocation).
>>
Are you saying above structure change will allow you to change the code to
combine
memory allocation of hvm_irq_dpci->mirq and hvm_irq_dpci->hvm_timer into a
single
allocation of array of pointers?
If my understanding of the proposal correctly, this will only work if all the
elements
inside of the union are not used at the same time.
Please confirm/correct my understanding, Haitao and I will discuss this
tomorrow.
Allen
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|