xen: branch for v5.12-rc7

-----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQRTLbB6QfY48x44uB6AXGG7T9hjvgUCYHB+3wAKCRCAXGG7T9hj
 vktXAQCV+BbqlrLdQwsoWqFCrPB9PLMOsMRw5q9BykUDihscEgD/RwnJlIGGwgvE
 MzAcCyXWukL8epStIWbBxTBHM12eJw8=
 =7jyu
 -----END PGP SIGNATURE-----

Merge tag 'for-linus-5.12b-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fix from Juergen Gross:
 "A single fix of a 5.12 patch for the rather uncommon problem of
  running as a Xen guest with a real time kernel config"

* tag 'for-linus-5.12b-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen/evtchn: Change irq_info lock to raw_spinlock_t
This commit is contained in:
Linus Torvalds 2021-04-09 09:58:42 -07:00
commit 0b76088799

View File

@ -110,7 +110,7 @@ struct irq_info {
unsigned short eoi_cpu; /* EOI must happen on this cpu-1 */ unsigned short eoi_cpu; /* EOI must happen on this cpu-1 */
unsigned int irq_epoch; /* If eoi_cpu valid: irq_epoch of event */ unsigned int irq_epoch; /* If eoi_cpu valid: irq_epoch of event */
u64 eoi_time; /* Time in jiffies when to EOI. */ u64 eoi_time; /* Time in jiffies when to EOI. */
spinlock_t lock; raw_spinlock_t lock;
union { union {
unsigned short virq; unsigned short virq;
@ -312,7 +312,7 @@ static int xen_irq_info_common_setup(struct irq_info *info,
info->evtchn = evtchn; info->evtchn = evtchn;
info->cpu = cpu; info->cpu = cpu;
info->mask_reason = EVT_MASK_REASON_EXPLICIT; info->mask_reason = EVT_MASK_REASON_EXPLICIT;
spin_lock_init(&info->lock); raw_spin_lock_init(&info->lock);
ret = set_evtchn_to_irq(evtchn, irq); ret = set_evtchn_to_irq(evtchn, irq);
if (ret < 0) if (ret < 0)
@ -472,28 +472,28 @@ static void do_mask(struct irq_info *info, u8 reason)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&info->lock, flags); raw_spin_lock_irqsave(&info->lock, flags);
if (!info->mask_reason) if (!info->mask_reason)
mask_evtchn(info->evtchn); mask_evtchn(info->evtchn);
info->mask_reason |= reason; info->mask_reason |= reason;
spin_unlock_irqrestore(&info->lock, flags); raw_spin_unlock_irqrestore(&info->lock, flags);
} }
static void do_unmask(struct irq_info *info, u8 reason) static void do_unmask(struct irq_info *info, u8 reason)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&info->lock, flags); raw_spin_lock_irqsave(&info->lock, flags);
info->mask_reason &= ~reason; info->mask_reason &= ~reason;
if (!info->mask_reason) if (!info->mask_reason)
unmask_evtchn(info->evtchn); unmask_evtchn(info->evtchn);
spin_unlock_irqrestore(&info->lock, flags); raw_spin_unlock_irqrestore(&info->lock, flags);
} }
#ifdef CONFIG_X86 #ifdef CONFIG_X86