diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc index cd9a7164f4..98a4521155 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -1178,7 +1178,8 @@ versa. For example to change dom0 without changing domU, use hardware domain is architecture dependent. The upper limit for both values on x86 is such that the resulting total number of IRQs can't be higher than 32768. Note that specifying zero as domU value means zero, while for dom0 it means -to use the default. +to use the default. Note further that the Dom0 setting has no useful meaning +for the PVH case; use of the option may have an adverse effect there, though. ### ext_regions (Arm) > `= ` diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index d2b29143d1..d2a313c4ac 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -2670,6 +2670,10 @@ unsigned int __hwdom_init arch_hwdom_irqs(const struct domain *d) if ( is_system_domain(d) ) return max_irqs; + /* PVH (generally: HVM) can't use PHYSDEVOP_pirq_eoi_gmfn_v{1,2}. */ + if ( is_hvm_domain(d) ) + return nr_irqs; + if ( !d->domain_id ) n = min(n, dom0_max_vcpus()); n = min(nr_irqs_gsi + n * NR_DYNAMIC_VECTORS, max_irqs);