Applied, thanks! Damien Zammit, le dim. 12 oct. 2025 04:07:33 +0000, a ecrit: > Now the irq is chosen correctly based on which INTx pin > is assigned to each pci device. > > Also-by: Michael Kelly <[email protected]> > --- > debian/patches/acpi-init-files.diff | 28 ++++++++++++++++++++++++++-- > 1 file changed, 26 insertions(+), 2 deletions(-) > > diff --git a/debian/patches/acpi-init-files.diff > b/debian/patches/acpi-init-files.diff > index f45cec9..3f95537 100644 > --- a/debian/patches/acpi-init-files.diff > +++ b/debian/patches/acpi-init-files.diff > @@ -1,6 +1,6 @@ > --- /dev/null > +++ b/acpi_init.c > -@@ -0,0 +1,712 @@ > +@@ -0,0 +1,736 @@ > +// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 > +#include <acpi/acpi.h> > + > @@ -35,6 +35,8 @@ > +#define LEGACY_ISA_IRQS 8 > +#define PCI_IRQ_START 16 > + > ++#define PCI_INTERRUPT_PIN 0x3d > ++ > +extern acpi_status acpi_hw_legacy_sleep(u8 sleep_state); > + > +// Lets keep the ACPI tables in this module > @@ -489,6 +491,20 @@ > + return AE_OK; > +} > + > ++static int > ++acpi_pci_get_device_pin(uint16_t bus, uint16_t dev, uint16_t func) > ++{ > ++ struct acpi_pci_id pci_id = { > ++ .segment = 0, .bus = bus, .device = dev, .function = func > ++ }; > ++ u64 pci_pin; > ++ > ++ /* cast to int is safe having read only 8 bits */ > ++ return (acpi_os_read_pci_configuration(&pci_id, PCI_INTERRUPT_PIN, > &pci_pin, 8) > ++ ? -1 > ++ : (int)pci_pin); > ++} > ++ > +int > +acpi_get_irq_number(uint16_t bus, uint16_t dev, uint16_t func) > +{ > @@ -498,6 +514,7 @@ > + struct acpi_resource *res; > + uint8_t *buf; > + int srs_count; > ++ int pci_pin; > + > + acpi_handle handle = ACPI_ROOT_OBJECT; > + acpi_handle parent_handle = NULL; > @@ -522,13 +539,20 @@ > + if (ACPI_FAILURE(err)) > + return -EIO; > + > ++ pci_pin = acpi_pci_get_device_pin(bus, dev, func); > ++ /* Fail if the device pin used is unknown (0) */ > ++ if (pci_pin <= 0) > ++ return -EIO; > ++ > + entry = ACPI_CAST_PTR(struct acpi_pci_routing_table, ACPI_CAST_PTR(u8, > buffer.pointer)); > + while (entry && (entry->length > 0)) > + { > + /* Already applies to the bus of the device */ > + prt_dev = (entry->address >> 16) & 0xffff; > + prt_func = entry->address & 0xffff; > -+ if ((prt_dev == dev) && (prt_func == 0xffff)) > ++ if ((prt_dev == dev) && (prt_func == 0xffff) > ++ /* PCI configuration enumerates pin in use as 1..4 whereas libacpica > uses 0..3 */ > ++ && (entry->pin == (pci_pin - 1))) > + { > + if (entry->source[0]) > + { > -- > 2.45.2 > > >
-- Samuel <D> m'enfin, le 5 juillet, le mec vient visiter le labo... * D a marque d'une croix rouge le 5 juillet sur son agenda <y> niarc niarc niarc <D> cet homme va souffrir <B> c'est donc le 5 juillet qu'il meurt d'un accident de la route écrasé par un truck muni d'un pare buffle -+- #ens-mim - repaire de terroristes -+-
