[PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext ints

Matthew Barnes posted 3 patches 1 month, 2 weeks ago
[PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext ints
Posted by Matthew Barnes 1 month, 2 weeks ago
Resolves: https://gitlab.com/xen-project/xen/-/issues/194
Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>
---
 xen/arch/x86/include/asm/genapic.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index a694371c6d16..d29bccc39b4b 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -45,21 +45,21 @@ void cf_check send_IPI_self_legacy(uint8_t vector);
 
 void cf_check init_apic_ldr_flat(void);
 unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask);
+const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
 const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu);
 #define GENAPIC_FLAT \
-	.int_delivery_mode = dest_LowestPrio, \
-	.int_dest_mode = 1 /* logical delivery */, \
+	.int_delivery_mode = dest_Fixed, \
+	.int_dest_mode = 0 /* physical delivery */, \
 	.init_apic_ldr = init_apic_ldr_flat, \
-	.vector_allocation_cpumask = vector_allocation_cpumask_flat, \
-	.cpu_mask_to_apicid = cpu_mask_to_apicid_flat, \
+	.vector_allocation_cpumask = vector_allocation_cpumask_phys, \
+	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys, \
 	.send_IPI_mask = send_IPI_mask_flat, \
 	.send_IPI_self = send_IPI_self_legacy
 
 void cf_check init_apic_ldr_phys(void);
 unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask);
 void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector);
-const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 #define GENAPIC_PHYS \
 	.int_delivery_mode = dest_Fixed, \
 	.int_dest_mode = 0 /* physical delivery */, \
-- 
2.46.0
Re: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext ints
Posted by Roger Pau Monné 1 month, 2 weeks ago
On Wed, Oct 02, 2024 at 04:17:24PM +0100, Matthew Barnes wrote:

The commit needs a log, doesn't need to be extremely long, but it's
important to note the reasoning behind using physical delivery for
external interrupts vs logial mode.

Take a look at the x2APIC one for inspiration, the motivation should
be similar.

Thanks, Roger.
Re: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext ints
Posted by Jan Beulich 1 month, 2 weeks ago
On 03.10.2024 12:51, Roger Pau Monné wrote:
> On Wed, Oct 02, 2024 at 04:17:24PM +0100, Matthew Barnes wrote:
> 
> The commit needs a log, doesn't need to be extremely long, but it's
> important to note the reasoning behind using physical delivery for
> external interrupts vs logial mode.

Furthermore I question that the naming can remain as is - the driver
is no longer uniformly "flat" then.

Jan

Re: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext ints
Posted by Roger Pau Monné 1 month, 2 weeks ago
On Fri, Oct 04, 2024 at 08:48:05AM +0200, Jan Beulich wrote:
> On 03.10.2024 12:51, Roger Pau Monné wrote:
> > On Wed, Oct 02, 2024 at 04:17:24PM +0100, Matthew Barnes wrote:
> > 
> > The commit needs a log, doesn't need to be extremely long, but it's
> > important to note the reasoning behind using physical delivery for
> > external interrupts vs logial mode.
> 
> Furthermore I question that the naming can remain as is - the driver
> is no longer uniformly "flat" then.

Yeah, that's done in a later patch.  I wouldn't mind if it was all
folded into the same patch TBH.

Thanks, Roger.