mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
Misc irqchip fixes:
- Fix an endianness bug in the gic-v5 irqchip driver - Revert a broken commit from the riscv-imsic irqchip driver Signed-off-by: Ingo Molnar <mingo@kernel.org> -----BEGIN PGP SIGNATURE----- iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmljdx8RHG1pbmdvQGtl cm5lbC5vcmcACgkQEnMQ0APhK1gkMg//QE/lhLha0o4pcsmz1yiPcieScvCqhiDE ReolAwhixxZnbhfpO6beZs1bWZ8CetqfUhX3RUuOWnzUuzExYitJPC89EUl8wv5I N+3GqllIrgXWiR3vYXBAxd/n+/zjiVZJwE3napd6Ua0R31vKN2tkGW/sBynbmJnJ EZxb1ystomr1KAnHEtsXIyh2aM0Hyq+ueSRgPyLRgrnYisF9OkNvQziSF6XNvxrG g4DSMMK5owUNHggB/H+9mZ0P0uE6vDhThycE4bNZLUa1QaPp1xnPcU8f/TiNqWBt LZE+eg/eIFS3UD3iU7yONVWGKE7OGRpVY8+cERoua/z7VGkelUBB6jWXNwM8+wIa L70b69Cuv0qiihC0icyo5EJwcDjqS1xG+HxChWOkgOgmrCZZACPrcNmvF1Ii7e24 oWF6FYNzKzW+Txs+pD/DEckuBcTBwrfJfVsdnoNxcm/cUdBbFEhBoWybeRW28on0 R0AFyTYb/Oe4GGtsfPJmEvfnX1fpajKX6Emh7uCgPIz5A+Cku/HJ83pQRXU2JIKr bRsLEjNwVg8nGx5lyIQHpc5O8g38bVwuic2UwNSnuSs32jX/K0Hi+sOHCSNqdfmI xMIFNbXD5IaPyoBun3cVlFCyTsEhGOvLTs4HrBFn+ekponmj6vvQA5fGL2/vS899 GNdL05I6BNY= =qhAZ -----END PGP SIGNATURE----- Merge tag 'irq-urgent-2026-01-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull misc irqchip fixes from Ingo Molnar: - Fix an endianness bug in the gic-v5 irqchip driver - Revert a broken commit from the riscv-imsic irqchip driver * tag 'irq-urgent-2026-01-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: Revert "irqchip/riscv-imsic: Embed the vector array in lpriv" irqchip/gic-v5: Fix gicv5_its_map_event() ITTE read endianness
This commit is contained in:
commit
88730166f3
|
|
@ -849,7 +849,7 @@ static int gicv5_its_map_event(struct gicv5_its_dev *its_dev, u16 event_id, u32
|
|||
|
||||
itte = gicv5_its_device_get_itte_ref(its_dev, event_id);
|
||||
|
||||
if (FIELD_GET(GICV5_ITTL2E_VALID, *itte))
|
||||
if (FIELD_GET(GICV5_ITTL2E_VALID, le64_to_cpu(*itte)))
|
||||
return -EEXIST;
|
||||
|
||||
itt_entry = FIELD_PREP(GICV5_ITTL2E_LPI_ID, lpi) |
|
||||
|
|
|
|||
|
|
@ -477,6 +477,7 @@ static void __init imsic_local_cleanup(void)
|
|||
lpriv = per_cpu_ptr(imsic->lpriv, cpu);
|
||||
|
||||
bitmap_free(lpriv->dirty_bitmap);
|
||||
kfree(lpriv->vectors);
|
||||
}
|
||||
|
||||
free_percpu(imsic->lpriv);
|
||||
|
|
@ -490,8 +491,7 @@ static int __init imsic_local_init(void)
|
|||
int cpu, i;
|
||||
|
||||
/* Allocate per-CPU private state */
|
||||
imsic->lpriv = __alloc_percpu(struct_size(imsic->lpriv, vectors, global->nr_ids + 1),
|
||||
__alignof__(*imsic->lpriv));
|
||||
imsic->lpriv = alloc_percpu(typeof(*imsic->lpriv));
|
||||
if (!imsic->lpriv)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
@ -511,6 +511,12 @@ static int __init imsic_local_init(void)
|
|||
timer_setup(&lpriv->timer, imsic_local_timer_callback, TIMER_PINNED);
|
||||
#endif
|
||||
|
||||
/* Allocate vector array */
|
||||
lpriv->vectors = kcalloc(global->nr_ids + 1, sizeof(*lpriv->vectors),
|
||||
GFP_KERNEL);
|
||||
if (!lpriv->vectors)
|
||||
goto fail_local_cleanup;
|
||||
|
||||
/* Setup vector array */
|
||||
for (i = 0; i <= global->nr_ids; i++) {
|
||||
vec = &lpriv->vectors[i];
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ struct imsic_local_priv {
|
|||
#endif
|
||||
|
||||
/* Local vector table */
|
||||
struct imsic_vector vectors[];
|
||||
struct imsic_vector *vectors;
|
||||
};
|
||||
|
||||
struct imsic_priv {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user