Re: [patch RFC 24/38] x86/xen: Consolidate XEN-MSI init

Jürgen Groß
2020-08-25T04:21:07Z

On 24.08.20 23:21, Thomas Gleixner wrote:
> On Mon, Aug 24 2020 at 06:59, Jürgen Groß wrote:
>> On 21.08.20 02:24, Thomas Gleixner wrote:
>>> +static __init void xen_setup_pci_msi(void)
>>> +{
>>> + if (xen_initial_domain()) {
>>> + x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
>>> + x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
>>> + x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
>>> + pci_msi_ignore_mask = 1;
>>
>> This is wrong, as a PVH initial domain shouldn't do the pv settings.
>>
>> The "if (xen_initial_domain())" should be inside the pv case, like:
>>
>> if (xen_pv_domain()) {
>> if (xen_initial_domain()) {
>> ...
>> } else {
>> ...
>> }
>> } else if (xen_hvm_domain()) {
>> ...
>
> I still think it does the right thing depending on the place it is
> called from, but even if so, it's completely unreadable gunk. I'll fix
> that proper.

The main issue is that xen_initial_domain() and xen_pv_domain() are
orthogonal to each other. So xen_initial_domain() can either be true
for xen_pv_domain() (the "classic" pv dom0) or for xen_hvm_domain()
(the new PVH dom0).

Juergen