~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/arch/arm/interrupts.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/arch/arm/interrupts.rst (Version linux-6.12-rc7) and /Documentation/arch/m68k/interrupts.rst (Version linux-4.15.18)


  1 ==========                                        
  2 Interrupts                                        
  3 ==========                                        
  4                                                   
  5 2.5.2-rmk5:                                       
  6   This is the first kernel that contains a maj    
  7   major architecture-specific subsystems.         
  8                                                   
  9 Firstly, it contains some pretty major changes    
 10 MMU TLB.  Each MMU TLB variant is now handled     
 11 we have TLB v3, TLB v4 (without write buffer),    
 12 and finally TLB v4 (with write buffer, with I     
 13 There is more assembly code inside each of the    
 14 allow more flexible TLB handling for the futur    
 15                                                   
 16 Secondly, the IRQ subsystem.                      
 17                                                   
 18 The 2.5 kernels will be having major changes t    
 19 Unfortunately, this means that machine types t    
 20 array (basically all machine types) will break    
 21 machine type that we currently have.              
 22                                                   
 23 Lets take an example.  On the Assabet with Nep    
 24                                                   
 25                   GPIO25                 IRR:2    
 26         SA1100 ------------> Neponset --------    
 27                                          IIR:1    
 28                                       --------    
 29                                          IIR:0    
 30                                       --------    
 31                                                   
 32 The way stuff currently works, all SA1111 inte    
 33 exclusive of each other - if you're processing    
 34 SA1111 and another comes in, you have to wait     
 35 finish processing before you can service the n    
 36 IDE PIO-based interrupt on the SA1111 excludes    
 37 SMC9196 interrupts until it has finished trans    
 38 data, which can be a long time.  Note also tha    
 39 SA1111 IRQ handler, SA1111 IRQs can hold off S    
 40                                                   
 41                                                   
 42 The new approach brings several new ideas...      
 43                                                   
 44 We introduce the concept of a "parent" and a "    
 45 to the Neponset handler, the "parent" is GPIO2    
 46 are SA1111, SMC9196 and USAR.                     
 47                                                   
 48 We also bring the idea of an IRQ "chip" (mainl    
 49 the irqdesc array).  This doesn't have to be a    
 50 SA11x0 IRQs are handled by two separate "chip"    
 51 GPIO0-10, and another for all the rest.  It is    
 52 the various operations (maybe this'll change t    
 53 This structure has the following operations::     
 54                                                   
 55   struct irqchip {                                
 56           /*                                      
 57            * Acknowledge the IRQ.                 
 58            * If this is a level-based IRQ, the    
 59            * as well.                             
 60            */                                     
 61           void (*ack)(unsigned int irq);          
 62           /*                                      
 63            * Mask the IRQ in hardware.            
 64            */                                     
 65           void (*mask)(unsigned int irq);         
 66           /*                                      
 67            * Unmask the IRQ in hardware.          
 68            */                                     
 69           void (*unmask)(unsigned int irq);       
 70           /*                                      
 71            * Re-run the IRQ                       
 72            */                                     
 73           void (*rerun)(unsigned int irq);        
 74           /*                                      
 75            * Set the type of the IRQ.             
 76            */                                     
 77           int (*type)(unsigned int irq, unsign    
 78   };                                              
 79                                                   
 80 ack                                               
 81        - required.  May be the same function a    
 82          handled by do_level_IRQ.                 
 83 mask                                              
 84        - required.                                
 85 unmask                                            
 86        - required.                                
 87 rerun                                             
 88        - optional.  Not required if you're usi    
 89          IRQs that use this 'irqchip'.  Genera    
 90          the hardware IRQ if possible.  If not    
 91          directly.                                
 92 type                                              
 93        - optional.  If you don't support chang    
 94          it should be null so people can detec    
 95          set the IRQ type.                        
 96                                                   
 97 For each IRQ, we keep the following informatio    
 98                                                   
 99         - "disable" depth (number of disable_i    
100         - flags indicating what we can do with    
101           noautounmask) as before                 
102         - status of the IRQ (probing, enable,     
103         - chip                                    
104         - per-IRQ handler                         
105         - irqaction structure list                
106                                                   
107 The handler can be one of the 3 standard handl    
108 "simple", or your own specific handler if you     
109                                                   
110 The "level" handler is what we currently have     
111 "edge" knows about the brokenness of such IRQ     
112 need to leave the hardware IRQ enabled while p    
113 further IRQ events should the IRQ happen again    
114 "simple" handler is very basic, and does not p    
115 manipulation, nor state tracking.  This is use    
116 SMC9196 and USAR above.                           
117                                                   
118 So, what's changed?                               
119 ===================                               
120                                                   
121 1. Machine implementations must not write to t    
122                                                   
123 2. New functions to manipulate the irqdesc arr    
124    to be useful only to machine specific code.    
125    only be used by machine specific code, but     
126    absolutely necessary.                          
127                                                   
128         set_irq_chip(irq,chip)                    
129                 Set the mask/unmask methods fo    
130                                                   
131         set_irq_handler(irq,handler)              
132                 Set the handler for this IRQ (    
133                                                   
134         set_irq_chained_handler(irq,handler)      
135                 Set a "chained" handler for th    
136                 enables this IRQ (eg, Neponset    
137                                                   
138         set_irq_flags(irq,flags)                  
139                 Set the valid/probe/noautoenab    
140                                                   
141         set_irq_type(irq,type)                    
142                 Set active the IRQ edge(s)/lev    
143                 SA1111 INTPOL manipulation, an    
144                 function.  Type should be one     
145                 <linux/irq.h>                     
146                                                   
147 3. set_GPIO_IRQ_edge() is obsolete, and should    
148                                                   
149 4. Direct access to SA1111 INTPOL is deprecate    
150                                                   
151 5. A handler is expected to perform any necess    
152    parent IRQ via the correct chip specific fu    
153    the SA1111 is directly connected to a SA111    
154    acknowledge the SA1110 IRQ each time you re    
155                                                   
156 6. For any child which doesn't have its own IR    
157    (eg, SMC9196), the handler must mask or ack    
158    while the child handler is called, and the     
159    "simple" handler (not "edge" nor "level").     
160    the parent IRQ should be unmasked, and the     
161    be re-checked for pending events.  (see the    
162    details).                                      
163                                                   
164 7. fixup_irq() is gone, as is `arch/arm/mach-*    
165                                                   
166 Please note that this will not solve all probl    
167 hardware based.  Mixing level-based and edge-b    
168 parent signal (eg neponset) is one such area w    
169 solution can't provide the full answer to low     
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php