2024-04-23 17:37:34

by Jacob Pan

[permalink] [raw]
Subject: [PATCH v3 02/12] x86/irq: Unionize PID.PIR for 64bit access w/o casting

Make PIR field into u64 such that atomic xchg64 can be used without ugly
casting.

Suggested-by: Thomas Gleixner <[email protected]>
Signed-off-by: Jacob Pan <[email protected]>
---
arch/x86/include/asm/posted_intr.h | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/posted_intr.h b/arch/x86/include/asm/posted_intr.h
index f0324c56f7af..acf237b2882e 100644
--- a/arch/x86/include/asm/posted_intr.h
+++ b/arch/x86/include/asm/posted_intr.h
@@ -9,7 +9,10 @@

/* Posted-Interrupt Descriptor */
struct pi_desc {
- u32 pir[8]; /* Posted interrupt requested */
+ union {
+ u32 pir[8]; /* Posted interrupt requested */
+ u64 pir64[4];
+ };
union {
struct {
/* bit 256 - Outstanding Notification */
--
2.25.1



Subject: [tip: x86/irq] x86/irq: Unionize PID.PIR for 64bit access w/o casting

The following commit has been merged into the x86/irq branch of tip:

Commit-ID: 4ec8fd037139a4d8afb2a5c7edb4a17f9449a035
Gitweb: https://git.kernel.org/tip/4ec8fd037139a4d8afb2a5c7edb4a17f9449a035
Author: Jacob Pan <[email protected]>
AuthorDate: Tue, 23 Apr 2024 10:41:04 -07:00
Committer: Thomas Gleixner <[email protected]>
CommitterDate: Tue, 30 Apr 2024 00:54:42 +02:00

x86/irq: Unionize PID.PIR for 64bit access w/o casting

Make the PIR field into u64 such that atomic xchg64 can be used without
ugly casting.

Suggested-by: Thomas Gleixner <[email protected]>
Signed-off-by: Jacob Pan <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Link: https://lore.kernel.org/r/[email protected]

---
arch/x86/include/asm/posted_intr.h | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/posted_intr.h b/arch/x86/include/asm/posted_intr.h
index f0324c5..acf237b 100644
--- a/arch/x86/include/asm/posted_intr.h
+++ b/arch/x86/include/asm/posted_intr.h
@@ -9,7 +9,10 @@

/* Posted-Interrupt Descriptor */
struct pi_desc {
- u32 pir[8]; /* Posted interrupt requested */
+ union {
+ u32 pir[8]; /* Posted interrupt requested */
+ u64 pir64[4];
+ };
union {
struct {
/* bit 256 - Outstanding Notification */