<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in internals.h</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>827bafd5 - genirq: Make a few functions static</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#827bafd5</link>
        <description>genirq: Make a few functions staticNone of these functions are used outside of their source files.Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/all/878qpe2gnx.ffs@tglx

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Sun, 09 Mar 2025 18:38:26 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>751dc837 - genirq: Introduce common irq_force_complete_move() implementation</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#751dc837</link>
        <description>genirq: Introduce common irq_force_complete_move() implementationCONFIG_GENERIC_PENDING_IRQ requires an architecture specific implementationof irq_force_complete_move() for CPU hotplug. At the moment, only x86implements this unconditionally, but for RISC-V irq_force_complete_move()is only needed when the RISC-V IMSIC driver is in use and not neededotherwise.To allow runtime configuration of this mechanism, introduce a commonirq_force_complete_move() implementation in the interrupt core code, whichonly invokes the completion function, when a interrupt chip in thehierarchy implements it.Switch X86 over to the new mechanism. No functional change intended.Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Signed-off-by: Anup Patel &lt;apatel@ventanamicro.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/all/20250217085657.789309-5-apatel@ventanamicro.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Mon, 17 Feb 2025 08:56:50 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>f94a1824 - genirq: Remove IRQ_MOVE_PCNTXT and related code</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#f94a1824</link>
        <description>genirq: Remove IRQ_MOVE_PCNTXT and related codeNow that x86 is converted over to use the IRQCHIP_MOVE_DEFERRED flags,remove IRQ*_MOVE_PCNTXT and related code.Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/all/20241210103335.626707225@linutronix.de

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Tue, 10 Dec 2024 10:34:17 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>9620301c - genirq: Remove handle_enforce_irqctx() wrapper</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#9620301c</link>
        <description>genirq: Remove handle_enforce_irqctx() wrapperNow that it is unconditionally available, remove the wrapper.Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/all/20241210101811.561078243@linutronix.de

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Tue, 10 Dec 2024 10:20:45 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>8d187a77 - genirq: Make handle_enforce_irqctx() unconditionally available</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#8d187a77</link>
        <description>genirq: Make handle_enforce_irqctx() unconditionally availableCommit 1b57d91b969c (&quot;irqchip/gic-v2, v3: Prevent SW resends entirely&quot;)sett the flag which enforces interrupt handling in interrupt context andprevents software base resends for ARM GIC v2/v3.But it missed that the helper function which checks the flag was hiddenbehind CONFIG_GENERIC_PENDING_IRQ, which is not set by ARM[64].Make the helper unconditionally available so that the enforcement actuallyworks.Fixes: 1b57d91b969c (&quot;irqchip/gic-v2, v3: Prevent SW resends entirely&quot;)Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/all/20241210101811.497716609@linutronix.de

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Tue, 10 Dec 2024 10:20:43 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>cb06c982 - genirq/debugfs: Print irqdomain flags as human-readable strings</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#cb06c982</link>
        <description>genirq/debugfs: Print irqdomain flags as human-readable stringsImprove the readability of irqdomain debugging information in debugfs byprinting the flags field of domain files as human-readable strings insteadof a raw bitmask, which aligned with the existing style used for irqchipflags in the irq debug files.Before:	#cat :cpus:cpu@0:interrupt-controller	name:   :cpus:cpu@0:interrupt-controller	 size:   0	 mapped: 2	 flags:  0x00000003After:	#cat :cpus:cpu@0:interrupt-controller	name:   :cpus:cpu@0:interrupt-controller	 size:   0	 mapped: 3	 flags:  0x00000003	            IRQ_DOMAIN_FLAG_HIERARCHY	            IRQ_DOMAIN_NAME_ALLOCATEDSigned-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20240529091628.3666379-1-ruanjinjie@huawei.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Wed, 29 May 2024 09:16:28 +0000</pubDate>
        <dc:creator>Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;</dc:creator>
    </item>
<item>
        <title>6678ae19 - genirq: Reuse irq_is_nmi()</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#6678ae19</link>
        <description>genirq: Reuse irq_is_nmi()Move irq_is_nmi() to the internal header file and reuse it all over theplace.Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20240423024037.3331215-1-ruanjinjie@huawei.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Tue, 23 Apr 2024 02:40:37 +0000</pubDate>
        <dc:creator>Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;</dc:creator>
    </item>
<item>
        <title>25a4a015 - genirq: Avoid summation loops for /proc/interrupts</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#25a4a015</link>
        <description>genirq: Avoid summation loops for /proc/interruptsshow_interrupts() unconditionally accumulates the per CPU interruptstatistics to determine whether an interrupt was ever raised.This can be avoided for all interrupts which are not strictly per CPUand not of type NMI because those interrupts provide already anaccumulated counter. The required logic is already implemented inkstat_irqs().Split the inner access logic out of kstat_irqs() and use it forkstat_irqs() and show_interrupts() to avoid the accumulation loopwhen possible.Originally-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Signed-off-by: Bitao Hu &lt;yaoma@linux.alibaba.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Reviewed-by: Liu Song &lt;liusong@linux.alibaba.com&gt;Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;Link: https://lore.kernel.org/r/20240411074134.30922-4-yaoma@linux.alibaba.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Thu, 11 Apr 2024 07:41:32 +0000</pubDate>
        <dc:creator>Bitao Hu &lt;yaoma@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>86d2a2f5 - genirq: Convert kstat_irqs to a struct</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#86d2a2f5</link>
        <description>genirq: Convert kstat_irqs to a structThe irq_desc::kstat_irqs member is a per-CPU variable of type int, which isonly capable of counting. A snapshot mechanism for interrupt statisticswill be added soon, which requires an additional variable to store thesnapshot.To facilitate expansion, convert kstat_irqs here to a struct containingonly the count.Originally-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Signed-off-by: Bitao Hu &lt;yaoma@linux.alibaba.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20240411074134.30922-2-yaoma@linux.alibaba.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Thu, 11 Apr 2024 07:41:30 +0000</pubDate>
        <dc:creator>Bitao Hu &lt;yaoma@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>51a5acce - genirq: Remove unused extern declaration</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#51a5acce</link>
        <description>genirq: Remove unused extern declarationcommit 3795de236d67 (&quot;genirq: Distangle kernel/irq/handle.c&quot;)left behind this.Signed-off-by: YueHaibing &lt;yuehaibing@huawei.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20230720143625.29176-1-yuehaibing@huawei.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Thu, 20 Jul 2023 14:36:25 +0000</pubDate>
        <dc:creator>YueHaibing &lt;yuehaibing@huawei.com&gt;</dc:creator>
    </item>
<item>
        <title>e2c12739 - genirq: Prevent nested thread vs synchronize_hardirq() deadlock</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#e2c12739</link>
        <description>genirq: Prevent nested thread vs synchronize_hardirq() deadlockThere is a possibility of deadlock if synchronize_hardirq() is calledwhen the nested threaded interrupt is active.  The following scenariowas observed on a uniprocessor PREEMPT_NONE system: Thread 1                      Thread 2 handle_nested_thread()  Set INPROGRESS  Call -&gt;thread_fn()   thread_fn goes to sleep                              free_irq()                               __synchronize_hardirq()                                Busy-loop forever waiting for INPROGRESS                                to be clearedThe INPROGRESS flag is only supposed to be used for hard interrupthandlers.  Remove the incorrect usage in the nested threaded interruptcase and instead re-use the threads_active / wait_for_threads mechanismto wait for nested threaded interrupts to complete.Signed-off-by: Vincent Whitchurch &lt;vincent.whitchurch@axis.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20230613-genirq-nested-v3-1-ae58221143eb@axis.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Thu, 06 Jul 2023 14:22:25 +0000</pubDate>
        <dc:creator>Vincent Whitchurch &lt;vincent.whitchurch@axis.com&gt;</dc:creator>
    </item>
<item>
        <title>7cc148a3 - genirq: Expand doc for PENDING and REPLAY flags</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#7cc148a3</link>
        <description>genirq: Expand doc for PENDING and REPLAY flagsAdding a bit more info about what the flags are used for may help futurecode readers.Signed-off-by: James Gowans &lt;jgowans@amazon.com&gt;Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;Cc: Marc Zyngier &lt;maz@kernel.org&gt;Cc: Liao Chang &lt;liaochang1@huawei.com&gt;Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;Link: https://lore.kernel.org/r/20230608120021.3273400-2-jgowans@amazon.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Thu, 08 Jun 2023 12:00:19 +0000</pubDate>
        <dc:creator>James Gowans &lt;jgowans@amazon.com&gt;</dc:creator>
    </item>
<item>
        <title>721255b9 - genirq: Use a maple tree for interrupt descriptor management</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#721255b9</link>
        <description>genirq: Use a maple tree for interrupt descriptor managementThe current implementation uses a static bitmap for interrupt descriptorallocation and a radix tree to pointer store the pointer for lookup.However, the size of the bitmap is constrained by the build time macroMAX_SPARSE_IRQS, which may not be sufficient to support high-end servers,particularly those with GICv4.1 hardware, which require a large interruptspace to cover LPIs and vSGIs.Replace the bitmap and the radix tree with a maple tree, which not onlystores pointers for lookup, but also provides a mechanism to find freeranges. That removes the build time hardcoded upper limit.Signed-off-by: Shanker Donthineni &lt;sdonthineni@nvidia.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20230519134902.1495562-4-sdonthineni@nvidia.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Fri, 19 May 2023 13:49:02 +0000</pubDate>
        <dc:creator>Shanker Donthineni &lt;sdonthineni@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>5e630aa8 - genirq: Encapsulate sparse bitmap handling</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#5e630aa8</link>
        <description>genirq: Encapsulate sparse bitmap handlingMove the open coded sparse bitmap handling into helper functions asa preparatory step for converting the sparse interrupt managementto a maple tree.No functional change.Signed-off-by: Shanker Donthineni &lt;sdonthineni@nvidia.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20230519134902.1495562-3-sdonthineni@nvidia.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Fri, 19 May 2023 13:49:01 +0000</pubDate>
        <dc:creator>Shanker Donthineni &lt;sdonthineni@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>bc06a9e0 - genirq: Use hlist for managing resend handlers</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#bc06a9e0</link>
        <description>genirq: Use hlist for managing resend handlersThe current implementation utilizes a bitmap for managing interrupt resendhandlers, which is allocated based on the SPARSE_IRQ/NR_IRQS macros.However, this method may not efficiently utilize memory during runtime,particularly when IRQ_BITMAP_BITS is large.Address this issue by using an hlist to manage interrupt resend handlersinstead of relying on a static bitmap memory allocation. Additionally, anew function, clear_irq_resend(), is introduced and called fromirq_shutdown to ensure a graceful teardown of the interrupt.Signed-off-by: Shanker Donthineni &lt;sdonthineni@nvidia.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Link: https://lore.kernel.org/r/20230519134902.1495562-2-sdonthineni@nvidia.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Fri, 19 May 2023 13:49:00 +0000</pubDate>
        <dc:creator>Shanker Donthineni &lt;sdonthineni@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>9049e1ca - genirq/irqdesc: Don&apos;t try to remove non-existing sysfs files</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#9049e1ca</link>
        <description>genirq/irqdesc: Don&apos;t try to remove non-existing sysfs filesFault injection tests trigger warnings like this:  kernfs: can not remove &apos;chip_name&apos;, no directory  WARNING: CPU: 0 PID: 253 at fs/kernfs/dir.c:1616 kernfs_remove_by_name_ns+0xce/0xe0  RIP: 0010:kernfs_remove_by_name_ns+0xce/0xe0  Call Trace:   &lt;TASK&gt;   remove_files.isra.1+0x3f/0xb0   sysfs_remove_group+0x68/0xe0   sysfs_remove_groups+0x41/0x70   __kobject_del+0x45/0xc0   kobject_del+0x29/0x40   free_desc+0x42/0x70   irq_free_descs+0x5e/0x90The reason is that the interrupt descriptor sysfs handling does not rollback on a failing kobject_add() during allocation. If the descriptor isfreed later on, kobject_del() is invoked with a not added kobject resultingin the above warnings.A proper rollback in case of a kobject_add() failure would be the straightforward solution. But this is not possible due to the way how interruptdescriptor sysfs handling works.Interrupt descriptors are allocated before sysfs becomes available. So thesysfs files for the early allocated descriptors are added later in the bootprocess. At this point there can be nothing useful done about a failingkobject_add(). For consistency the interrupt descriptor allocation alwaystreats kobject_add() failures as non-critical and just emits a warning.To solve this problem, keep track in the interrupt descriptor whetherkobject_add() was successful or not and make the invocation ofkobject_del() conditional on that.[ tglx: Massage changelog, comments and use a state bit. ]Fixes: ecb3f394c5db (&quot;genirq: Expose interrupt information through sysfs&quot;)Signed-off-by: Yang Yingliang &lt;yangyingliang@huawei.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Reviewed-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;Link: https://lore.kernel.org/r/20221128151612.1786122-1-yangyingliang@huawei.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Mon, 28 Nov 2022 15:16:12 +0000</pubDate>
        <dc:creator>Yang Yingliang &lt;yangyingliang@huawei.com&gt;</dc:creator>
    </item>
<item>
        <title>8707898e - genirq: Synchronize interrupt thread startup</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#8707898e</link>
        <description>genirq: Synchronize interrupt thread startupA kernel hang can be observed when running setserial in a loop on a kernelwith force threaded interrupts. The sequence of events is:   setserial     open(&quot;/dev/ttyXXX&quot;)       request_irq()     do_stuff()      -&gt; serial interrupt         -&gt; wake(irq_thread)	      desc-&gt;threads_active++;     close()       free_irq()         kthread_stop(irq_thread)     synchronize_irq() &lt;- hangs because desc-&gt;threads_active != 0The thread is created in request_irq() and woken up, but does not get on aCPU to reach the actual thread function, which would handle the pendingwake-up. kthread_stop() sets the should stop condition which makes thethread immediately exit, which in turn leaves the stale threads_activecount around.This problem was introduced with commit 519cc8652b3a, which addressed ainterrupt sharing issue in the PCIe code.Before that commit free_irq() invoked synchronize_irq(), which waits forthe hard interrupt handler and also for associated threads to complete.To address the PCIe issue synchronize_irq() was replaced with__synchronize_hardirq(), which only waits for the hard interrupt handler tocomplete, but not for threaded handlers.This was done under the assumption, that the interrupt thread alreadyreached the thread function and waits for a wake-up, which is guaranteed tobe handled before acting on the stop condition. The problematic case, thatthe thread would not reach the thread function, was obviously overlooked.Make sure that the interrupt thread is really started and reachesthread_fn() before returning from __setup_irq().This utilizes the existing wait queue in the interrupt descriptor. Thewait queue is unused for non-shared interrupts. For shared interrupts theusage might cause a spurious wake-up of a waiter in synchronize_irq() or thecompletion of a threaded handler might cause a spurious wake-up of thewaiter for the ready flag. Both are harmless and have no functional impact.[ tglx: Amended changelog ]Fixes: 519cc8652b3a (&quot;genirq: Synchronize only with single thread on free_irq()&quot;)Signed-off-by: Thomas Pfaff &lt;tpfaff@pcs.com&gt;Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Reviewed-by: Marc Zyngier &lt;maz@kernel.org&gt;Cc: stable@vger.kernel.orgLink: https://lore.kernel.org/r/552fe7b4-9224-b183-bb87-a8f36d335690@pcs.com

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Mon, 02 May 2022 11:28:29 +0000</pubDate>
        <dc:creator>Thomas Pfaff &lt;tpfaff@pcs.com&gt;</dc:creator>
    </item>
<item>
        <title>5320eb42 - irq: remove unused flags argument from __handle_irq_event_percpu()</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#5320eb42</link>
        <description>irq: remove unused flags argument from __handle_irq_event_percpu()The __IRQF_TIMER bit from the flags argument was used inadd_interrupt_randomness() to distinguish the timer interrupt from otherinterrupts. This is no longer the case.Remove the flags argument from __handle_irq_event_percpu().Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;Signed-off-by: Jason A. Donenfeld &lt;Jason@zx2c4.com&gt;

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Tue, 07 Dec 2021 12:17:34 +0000</pubDate>
        <dc:creator>Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>13b90cad - genirq/chip: Use the first chip in irq_chip_compose_msi_msg()</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#13b90cad</link>
        <description>genirq/chip: Use the first chip in irq_chip_compose_msi_msg()The documentation of irq_chip_compose_msi_msg() claims that withhierarchical irq domains the first chip in the hierarchy which has anirq_compose_msi_msg() callback is chosen. But the code just keepsiterating after it finds a chip with a compose callback.The x86 HPET MSI implementation relies on that behaviour, but that does notmake it more correct.The message should always be composed at the domain which manages theunderlying resource (e.g. APIC or remap table) because that domain knowsabout the required layout of the message.On X86 the following hierarchies exist:1)   vector -------- PCI/MSI2)   vector -- IR -- PCI/MSIThe vector domain has a different message format than the IR (remapping)domain. So obviously the PCI/MSI domain can&apos;t compose the message withouthaving knowledge about the parent domain, which is exactly the opposite ofwhat hierarchical domains want to achieve.X86 actually has two different PCI/MSI chips where #1 has a composecallback and #2 does not. #2 delegates the composition to the remap domainwhere it belongs, but #1 does it at the PCI/MSI level.For the upcoming device MSI support it&apos;s necessary to change this and justlet the first domain which can compose the message take care of it. Thatway the top level chip does not have to worry about it and the device MSIcode does not need special knowledge about topologies. It just sets thecompose callback to NULL and lets the hierarchy pick the first chip whichhas one.Due to that the attempt to move the compose callback from the directdelivery PCI/MSI domain to the vector domain made the system fail to bootwith interrupt remapping enabled because in the remapping caseirq_chip_compose_msi_msg() keeps iterating and choses the compose callbackof the vector domain which obviously creates the wrong format for the remaptable.Break out of the loop when the first irq chip with a compose callback isfound and fixup the HPET code temporarily. That workaround will be removedonce the direct delivery compose callback is moved to the place where itbelongs in the vector domain.Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Reviewed-by: Marc Zyngier &lt;maz@kernel.org&gt;                                                                                                                                                                                                                                     Link: https://lore.kernel.org/r/20200826112331.047917603@linutronix.de

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Wed, 26 Aug 2020 11:16:32 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
<item>
        <title>acd26bcf - genirq: Provide interrupt injection mechanism</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/kernel/irq/internals.h#acd26bcf</link>
        <description>genirq: Provide interrupt injection mechanismError injection mechanisms need a half ways safe way to inject interrupts asinvoking generic_handle_irq() or the actual device interrupt handlerdirectly from e.g. a debugfs write is not guaranteed to be safe.On x86 generic_handle_irq() is unsafe due to the hardware trainwreck whichis the base of x86 interrupt delivery and affinity management.Move the irq debugfs injection code into a separate function which can beused by error injection code as well.The implementation prevents at least that state is corrupted, but it cannotclose a very tiny race window on x86 which might result in a stale and notserviced device interrupt under very unlikely circumstances.This is explicitly for debugging and testing and not for production use orabuse in random driver code.Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;Tested-by: Kuppuswamy Sathyanarayanan &lt;sathyanarayanan.kuppuswamy@linux.intel.com&gt;Reviewed-by: Kuppuswamy Sathyanarayanan &lt;sathyanarayanan.kuppuswamy@linux.intel.com&gt;Acked-by: Marc Zyngier &lt;maz@kernel.org&gt;Link: https://lkml.kernel.org/r/20200306130623.990928309@linutronix.de

            List of files:
            /linux-6.15/kernel/irq/internals.h</description>
        <pubDate>Fri, 06 Mar 2020 13:03:47 +0000</pubDate>
        <dc:creator>Thomas Gleixner &lt;tglx@linutronix.de&gt;</dc:creator>
    </item>
</channel>
</rss>
