xive: Only set source type for LSIs
MSI is the default and LSI specific code is guarded by the xive_source_irq_is_lsi() helper. The xive_source_irq_set() helper is a nop for MSIs. Simplify the code by turning xive_source_irq_set() into xive_source_irq_set_lsi() and only call it for LSIs. The call to xive_source_irq_set(false) in spapr_xive_irq_free() is also a nop. Just drop it. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Cédric Le Goater <clg@kaod.org> Message-Id: <154999584656.690774.18352404495120358613.stgit@bahia.lan> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
e150ac89fb
commit
0afed8c819
@ -489,20 +489,19 @@ bool spapr_xive_irq_claim(sPAPRXive *xive, uint32_t lisn, bool lsi)
|
||||
}
|
||||
|
||||
xive->eat[lisn].w |= cpu_to_be64(EAS_VALID);
|
||||
xive_source_irq_set(xsrc, lisn, lsi);
|
||||
if (lsi) {
|
||||
xive_source_irq_set_lsi(xsrc, lisn);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool spapr_xive_irq_free(sPAPRXive *xive, uint32_t lisn)
|
||||
{
|
||||
XiveSource *xsrc = &xive->source;
|
||||
|
||||
if (lisn >= xive->nr_irqs) {
|
||||
return false;
|
||||
}
|
||||
|
||||
xive->eat[lisn].w &= cpu_to_be64(~EAS_VALID);
|
||||
xive_source_irq_set(xsrc, lisn, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -283,13 +283,10 @@ static inline bool xive_source_irq_is_lsi(XiveSource *xsrc, uint32_t srcno)
|
||||
return test_bit(srcno, xsrc->lsi_map);
|
||||
}
|
||||
|
||||
static inline void xive_source_irq_set(XiveSource *xsrc, uint32_t srcno,
|
||||
bool lsi)
|
||||
static inline void xive_source_irq_set_lsi(XiveSource *xsrc, uint32_t srcno)
|
||||
{
|
||||
assert(srcno < xsrc->nr_irqs);
|
||||
if (lsi) {
|
||||
bitmap_set(xsrc->lsi_map, srcno, 1);
|
||||
}
|
||||
bitmap_set(xsrc->lsi_map, srcno, 1);
|
||||
}
|
||||
|
||||
void xive_source_set_irq(void *opaque, int srcno, int val);
|
||||
|
Loading…
Reference in New Issue
Block a user