Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
This commit is contained in:
		
						commit
						026477c114
					
				
							
								
								
									
										4
									
								
								CREDITS
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								CREDITS
									
									
									
									
									
								
							| @ -3401,10 +3401,10 @@ S: Czech Republic | ||||
| 
 | ||||
| N: Thibaut Varene | ||||
| E: T-Bone@parisc-linux.org | ||||
| W: http://www.parisc-linux.org/ | ||||
| W: http://www.parisc-linux.org/~varenet/ | ||||
| P: 1024D/B7D2F063 E67C 0D43 A75E 12A5 BB1C  FA2F 1E32 C3DA B7D2 F063 | ||||
| D: PA-RISC port minion, PDC and GSCPS2 drivers, debuglocks and other bits | ||||
| D: Some bits in an ARM port, S1D13XXX FB driver, random patches here and there | ||||
| D: Some ARM at91rm9200 bits, S1D13XXX FB driver, random patches here and there | ||||
| D: AD1889 sound driver | ||||
| S: Paris, France | ||||
| 
 | ||||
|  | ||||
| @ -181,8 +181,8 @@ Intel IA32 microcode | ||||
| -------------------- | ||||
| 
 | ||||
| A driver has been added to allow updating of Intel IA32 microcode, | ||||
| accessible as both a devfs regular file and as a normal (misc) | ||||
| character device.  If you are not using devfs you may need to: | ||||
| accessible as a normal (misc) character device.  If you are not using | ||||
| udev you may need to: | ||||
| 
 | ||||
| mkdir /dev/cpu | ||||
| mknod /dev/cpu/microcode c 10 184 | ||||
| @ -201,7 +201,9 @@ with programs using shared memory. | ||||
| udev | ||||
| ---- | ||||
| udev is a userspace application for populating /dev dynamically with | ||||
| only entries for devices actually present. udev replaces devfs. | ||||
| only entries for devices actually present.  udev replaces the basic | ||||
| functionality of devfs, while allowing persistant device naming for | ||||
| devices. | ||||
| 
 | ||||
| FUSE | ||||
| ---- | ||||
| @ -231,18 +233,13 @@ The PPP driver has been restructured to support multilink and to | ||||
| enable it to operate over diverse media layers.  If you use PPP, | ||||
| upgrade pppd to at least 2.4.0. | ||||
| 
 | ||||
| If you are not using devfs, you must have the device file /dev/ppp | ||||
| If you are not using udev, you must have the device file /dev/ppp | ||||
| which can be made by: | ||||
| 
 | ||||
| mknod /dev/ppp c 108 0 | ||||
| 
 | ||||
| as root. | ||||
| 
 | ||||
| If you use devfsd and build ppp support as modules, you will need | ||||
| the following in your /etc/devfsd.conf file: | ||||
| 
 | ||||
| LOOKUP	PPP	MODLOAD | ||||
| 
 | ||||
| Isdn4k-utils | ||||
| ------------ | ||||
| 
 | ||||
|  | ||||
| @ -10,7 +10,8 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ | ||||
| 	    kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
 | ||||
| 	    procfs-guide.xml writing_usb_driver.xml \
 | ||||
| 	    kernel-api.xml journal-api.xml lsm.xml usb.xml \
 | ||||
| 	    gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml | ||||
| 	    gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
 | ||||
| 	    genericirq.xml | ||||
| 
 | ||||
| ###
 | ||||
| # The build process is as follows (targets):
 | ||||
|  | ||||
							
								
								
									
										474
									
								
								Documentation/DocBook/genericirq.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										474
									
								
								Documentation/DocBook/genericirq.tmpl
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,474 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||||
| 	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||||
| 
 | ||||
| <book id="Generic-IRQ-Guide"> | ||||
|  <bookinfo> | ||||
|   <title>Linux generic IRQ handling</title> | ||||
| 
 | ||||
|   <authorgroup> | ||||
|    <author> | ||||
|     <firstname>Thomas</firstname> | ||||
|     <surname>Gleixner</surname> | ||||
|     <affiliation> | ||||
|      <address> | ||||
|       <email>tglx@linutronix.de</email> | ||||
|      </address> | ||||
|     </affiliation> | ||||
|    </author> | ||||
|    <author> | ||||
|     <firstname>Ingo</firstname> | ||||
|     <surname>Molnar</surname> | ||||
|     <affiliation> | ||||
|      <address> | ||||
|       <email>mingo@elte.hu</email> | ||||
|      </address> | ||||
|     </affiliation> | ||||
|    </author> | ||||
|   </authorgroup> | ||||
| 
 | ||||
|   <copyright> | ||||
|    <year>2005-2006</year> | ||||
|    <holder>Thomas Gleixner</holder> | ||||
|   </copyright> | ||||
|   <copyright> | ||||
|    <year>2005-2006</year> | ||||
|    <holder>Ingo Molnar</holder> | ||||
|   </copyright> | ||||
| 
 | ||||
|   <legalnotice> | ||||
|    <para> | ||||
|      This documentation is free software; you can redistribute | ||||
|      it and/or modify it under the terms of the GNU General Public | ||||
|      License version 2 as published by the Free Software Foundation. | ||||
|    </para> | ||||
| 
 | ||||
|    <para> | ||||
|      This program is distributed in the hope that it will be | ||||
|      useful, but WITHOUT ANY WARRANTY; without even the implied | ||||
|      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||||
|      See the GNU General Public License for more details. | ||||
|    </para> | ||||
| 
 | ||||
|    <para> | ||||
|      You should have received a copy of the GNU General Public | ||||
|      License along with this program; if not, write to the Free | ||||
|      Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||||
|      MA 02111-1307 USA | ||||
|    </para> | ||||
| 
 | ||||
|    <para> | ||||
|      For more details see the file COPYING in the source | ||||
|      distribution of Linux. | ||||
|    </para> | ||||
|   </legalnotice> | ||||
|  </bookinfo> | ||||
| 
 | ||||
| <toc></toc> | ||||
| 
 | ||||
|   <chapter id="intro"> | ||||
|     <title>Introduction</title> | ||||
|     <para> | ||||
| 	The generic interrupt handling layer is designed to provide a | ||||
| 	complete abstraction of interrupt handling for device drivers. | ||||
| 	It is able to handle all the different types of interrupt controller | ||||
| 	hardware. Device drivers use generic API functions to request, enable, | ||||
| 	disable and free interrupts. The drivers do not have to know anything | ||||
| 	about interrupt hardware details, so they can be used on different | ||||
| 	platforms without code changes. | ||||
|     </para> | ||||
|     <para> | ||||
|   	This documentation is provided to developers who want to implement | ||||
| 	an interrupt subsystem based for their architecture, with the help | ||||
| 	of the generic IRQ handling layer. | ||||
|     </para> | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="rationale"> | ||||
|     <title>Rationale</title> | ||||
| 	<para> | ||||
| 	The original implementation of interrupt handling in Linux is using | ||||
| 	the __do_IRQ() super-handler, which is able to deal with every | ||||
| 	type of interrupt logic. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	Originally, Russell King identified different types of handlers to | ||||
| 	build a quite universal set for the ARM interrupt handler | ||||
| 	implementation in Linux 2.5/2.6. He distinguished between: | ||||
| 	<itemizedlist> | ||||
| 	  <listitem><para>Level type</para></listitem> | ||||
| 	  <listitem><para>Edge type</para></listitem> | ||||
| 	  <listitem><para>Simple type</para></listitem> | ||||
| 	</itemizedlist> | ||||
| 	In the SMP world of the __do_IRQ() super-handler another type | ||||
| 	was identified: | ||||
| 	<itemizedlist> | ||||
| 	  <listitem><para>Per CPU type</para></listitem> | ||||
| 	</itemizedlist> | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	This split implementation of highlevel IRQ handlers allows us to | ||||
| 	optimize the flow of the interrupt handling for each specific | ||||
| 	interrupt type. This reduces complexity in that particular codepath | ||||
| 	and allows the optimized handling of a given type. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	The original general IRQ implementation used hw_interrupt_type | ||||
| 	structures and their ->ack(), ->end() [etc.] callbacks to | ||||
| 	differentiate the flow control in the super-handler. This leads to | ||||
| 	a mix of flow logic and lowlevel hardware logic, and it also leads | ||||
| 	to unnecessary code duplication: for example in i386, there is a | ||||
| 	ioapic_level_irq and a ioapic_edge_irq irq-type which share many | ||||
| 	of the lowlevel details but have different flow handling. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	A more natural abstraction is the clean separation of the | ||||
| 	'irq flow' and the 'chip details'. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	Analysing a couple of architecture's IRQ subsystem implementations | ||||
| 	reveals that most of them can use a generic set of 'irq flow' | ||||
| 	methods and only need to add the chip level specific code. | ||||
| 	The separation is also valuable for (sub)architectures | ||||
| 	which need specific quirks in the irq flow itself but not in the | ||||
| 	chip-details - and thus provides a more transparent IRQ subsystem | ||||
| 	design. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	Each interrupt descriptor is assigned its own highlevel flow | ||||
| 	handler, which is normally one of the generic | ||||
| 	implementations. (This highlevel flow handler implementation also | ||||
| 	makes it simple to provide demultiplexing handlers which can be | ||||
| 	found in embedded platforms on various architectures.) | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	The separation makes the generic interrupt handling layer more | ||||
| 	flexible and extensible. For example, an (sub)architecture can | ||||
| 	use a generic irq-flow implementation for 'level type' interrupts | ||||
| 	and add a (sub)architecture specific 'edge type' implementation. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	To make the transition to the new model easier and prevent the | ||||
| 	breakage of existing implementations, the __do_IRQ() super-handler | ||||
| 	is still available. This leads to a kind of duality for the time | ||||
| 	being. Over time the new model should be used in more and more | ||||
| 	architectures, as it enables smaller and cleaner IRQ subsystems. | ||||
| 	</para> | ||||
|   </chapter> | ||||
|   <chapter id="bugs"> | ||||
|     <title>Known Bugs And Assumptions</title> | ||||
|     <para> | ||||
| 	None (knock on wood). | ||||
|     </para> | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="Abstraction"> | ||||
|     <title>Abstraction layers</title> | ||||
|     <para> | ||||
| 	There are three main levels of abstraction in the interrupt code: | ||||
| 	<orderedlist> | ||||
| 	  <listitem><para>Highlevel driver API</para></listitem> | ||||
| 	  <listitem><para>Highlevel IRQ flow handlers</para></listitem> | ||||
| 	  <listitem><para>Chiplevel hardware encapsulation</para></listitem> | ||||
| 	</orderedlist> | ||||
|     </para> | ||||
|     <sect1> | ||||
| 	<title>Interrupt control flow</title> | ||||
| 	<para> | ||||
| 	Each interrupt is described by an interrupt descriptor structure | ||||
| 	irq_desc. The interrupt is referenced by an 'unsigned int' numeric | ||||
| 	value which selects the corresponding interrupt decription structure | ||||
| 	in the descriptor structures array. | ||||
| 	The descriptor structure contains status information and pointers | ||||
| 	to the interrupt flow method and the interrupt chip structure | ||||
| 	which are assigned to this interrupt. | ||||
| 	</para> | ||||
| 	<para> | ||||
| 	Whenever an interrupt triggers, the lowlevel arch code calls into | ||||
| 	the generic interrupt code by calling desc->handle_irq(). | ||||
| 	This highlevel IRQ handling function only uses desc->chip primitives | ||||
| 	referenced by the assigned chip descriptor structure. | ||||
| 	</para> | ||||
|     </sect1> | ||||
|     <sect1> | ||||
| 	<title>Highlevel Driver API</title> | ||||
| 	<para> | ||||
| 	  The highlevel Driver API consists of following functions: | ||||
| 	  <itemizedlist> | ||||
| 	  <listitem><para>request_irq()</para></listitem> | ||||
| 	  <listitem><para>free_irq()</para></listitem> | ||||
| 	  <listitem><para>disable_irq()</para></listitem> | ||||
| 	  <listitem><para>enable_irq()</para></listitem> | ||||
| 	  <listitem><para>disable_irq_nosync() (SMP only)</para></listitem> | ||||
| 	  <listitem><para>synchronize_irq() (SMP only)</para></listitem> | ||||
| 	  <listitem><para>set_irq_type()</para></listitem> | ||||
| 	  <listitem><para>set_irq_wake()</para></listitem> | ||||
| 	  <listitem><para>set_irq_data()</para></listitem> | ||||
| 	  <listitem><para>set_irq_chip()</para></listitem> | ||||
| 	  <listitem><para>set_irq_chip_data()</para></listitem> | ||||
|           </itemizedlist> | ||||
| 	  See the autogenerated function documentation for details. | ||||
| 	</para> | ||||
|     </sect1> | ||||
|     <sect1> | ||||
| 	<title>Highlevel IRQ flow handlers</title> | ||||
| 	<para> | ||||
| 	  The generic layer provides a set of pre-defined irq-flow methods: | ||||
| 	  <itemizedlist> | ||||
| 	  <listitem><para>handle_level_irq</para></listitem> | ||||
| 	  <listitem><para>handle_edge_irq</para></listitem> | ||||
| 	  <listitem><para>handle_simple_irq</para></listitem> | ||||
| 	  <listitem><para>handle_percpu_irq</para></listitem> | ||||
| 	  </itemizedlist> | ||||
| 	  The interrupt flow handlers (either predefined or architecture | ||||
| 	  specific) are assigned to specific interrupts by the architecture | ||||
| 	  either during bootup or during device initialization. | ||||
| 	</para> | ||||
| 	<sect2> | ||||
| 	<title>Default flow implementations</title> | ||||
| 	    <sect3> | ||||
| 	 	<title>Helper functions</title> | ||||
| 		<para> | ||||
| 		The helper functions call the chip primitives and | ||||
| 		are used by the default flow implementations. | ||||
| 		The following helper functions are implemented (simplified excerpt): | ||||
| 		<programlisting> | ||||
| default_enable(irq) | ||||
| { | ||||
| 	desc->chip->unmask(irq); | ||||
| } | ||||
| 
 | ||||
| default_disable(irq) | ||||
| { | ||||
| 	if (!delay_disable(irq)) | ||||
| 		desc->chip->mask(irq); | ||||
| } | ||||
| 
 | ||||
| default_ack(irq) | ||||
| { | ||||
| 	chip->ack(irq); | ||||
| } | ||||
| 
 | ||||
| default_mask_ack(irq) | ||||
| { | ||||
| 	if (chip->mask_ack) { | ||||
| 		chip->mask_ack(irq); | ||||
| 	} else { | ||||
| 		chip->mask(irq); | ||||
| 		chip->ack(irq); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| noop(irq) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| 		</programlisting> | ||||
| 	        </para> | ||||
| 	    </sect3> | ||||
| 	</sect2> | ||||
| 	<sect2> | ||||
| 	<title>Default flow handler implementations</title> | ||||
| 	    <sect3> | ||||
| 	 	<title>Default Level IRQ flow handler</title> | ||||
| 		<para> | ||||
| 		handle_level_irq provides a generic implementation | ||||
| 		for level-triggered interrupts. | ||||
| 		</para> | ||||
| 		<para> | ||||
| 		The following control flow is implemented (simplified excerpt): | ||||
| 		<programlisting> | ||||
| desc->chip->start(); | ||||
| handle_IRQ_event(desc->action); | ||||
| desc->chip->end(); | ||||
| 		</programlisting> | ||||
| 		</para> | ||||
|    	    </sect3> | ||||
| 	    <sect3> | ||||
| 	 	<title>Default Edge IRQ flow handler</title> | ||||
| 		<para> | ||||
| 		handle_edge_irq provides a generic implementation | ||||
| 		for edge-triggered interrupts. | ||||
| 		</para> | ||||
| 		<para> | ||||
| 		The following control flow is implemented (simplified excerpt): | ||||
| 		<programlisting> | ||||
| if (desc->status & running) { | ||||
| 	desc->chip->hold(); | ||||
| 	desc->status |= pending | masked; | ||||
| 	return; | ||||
| } | ||||
| desc->chip->start(); | ||||
| desc->status |= running; | ||||
| do { | ||||
| 	if (desc->status & masked) | ||||
| 		desc->chip->enable(); | ||||
| 	desc-status &= ~pending; | ||||
| 	handle_IRQ_event(desc->action); | ||||
| } while (status & pending); | ||||
| desc-status &= ~running; | ||||
| desc->chip->end(); | ||||
| 		</programlisting> | ||||
| 		</para> | ||||
|    	    </sect3> | ||||
| 	    <sect3> | ||||
| 	 	<title>Default simple IRQ flow handler</title> | ||||
| 		<para> | ||||
| 		handle_simple_irq provides a generic implementation | ||||
| 		for simple interrupts. | ||||
| 		</para> | ||||
| 		<para> | ||||
| 		Note: The simple flow handler does not call any | ||||
| 		handler/chip primitives. | ||||
| 		</para> | ||||
| 		<para> | ||||
| 		The following control flow is implemented (simplified excerpt): | ||||
| 		<programlisting> | ||||
| handle_IRQ_event(desc->action); | ||||
| 		</programlisting> | ||||
| 		</para> | ||||
|    	    </sect3> | ||||
| 	    <sect3> | ||||
| 	 	<title>Default per CPU flow handler</title> | ||||
| 		<para> | ||||
| 		handle_percpu_irq provides a generic implementation | ||||
| 		for per CPU interrupts. | ||||
| 		</para> | ||||
| 		<para> | ||||
| 		Per CPU interrupts are only available on SMP and | ||||
| 		the handler provides a simplified version without | ||||
| 		locking. | ||||
| 		</para> | ||||
| 		<para> | ||||
| 		The following control flow is implemented (simplified excerpt): | ||||
| 		<programlisting> | ||||
| desc->chip->start(); | ||||
| handle_IRQ_event(desc->action); | ||||
| desc->chip->end(); | ||||
| 		</programlisting> | ||||
| 		</para> | ||||
|    	    </sect3> | ||||
| 	</sect2> | ||||
| 	<sect2> | ||||
| 	<title>Quirks and optimizations</title> | ||||
| 	<para> | ||||
| 	The generic functions are intended for 'clean' architectures and chips, | ||||
| 	which have no platform-specific IRQ handling quirks. If an architecture | ||||
| 	needs to implement quirks on the 'flow' level then it can do so by | ||||
| 	overriding the highlevel irq-flow handler. | ||||
| 	</para> | ||||
| 	</sect2> | ||||
| 	<sect2> | ||||
| 	<title>Delayed interrupt disable</title> | ||||
| 	<para> | ||||
| 	This per interrupt selectable feature, which was introduced by Russell | ||||
| 	King in the ARM interrupt implementation, does not mask an interrupt | ||||
| 	at the hardware level when disable_irq() is called. The interrupt is | ||||
| 	kept enabled and is masked in the flow handler when an interrupt event | ||||
| 	happens. This prevents losing edge interrupts on hardware which does | ||||
| 	not store an edge interrupt event while the interrupt is disabled at | ||||
| 	the hardware level. When an interrupt arrives while the IRQ_DISABLED | ||||
| 	flag is set, then the interrupt is masked at the hardware level and | ||||
| 	the IRQ_PENDING bit is set. When the interrupt is re-enabled by | ||||
| 	enable_irq() the pending bit is checked and if it is set, the | ||||
| 	interrupt is resent either via hardware or by a software resend | ||||
| 	mechanism. (It's necessary to enable CONFIG_HARDIRQS_SW_RESEND when | ||||
| 	you want to use the delayed interrupt disable feature and your | ||||
| 	hardware is not capable of retriggering	an interrupt.) | ||||
| 	The delayed interrupt disable can be runtime enabled, per interrupt, | ||||
| 	by setting the IRQ_DELAYED_DISABLE flag in the irq_desc status field. | ||||
| 	</para> | ||||
| 	</sect2> | ||||
|     </sect1> | ||||
|     <sect1> | ||||
| 	<title>Chiplevel hardware encapsulation</title> | ||||
| 	<para> | ||||
| 	The chip level hardware descriptor structure irq_chip | ||||
| 	contains all the direct chip relevant functions, which | ||||
| 	can be utilized by the irq flow implementations. | ||||
| 	  <itemizedlist> | ||||
| 	  <listitem><para>ack()</para></listitem> | ||||
| 	  <listitem><para>mask_ack() - Optional, recommended for performance</para></listitem> | ||||
| 	  <listitem><para>mask()</para></listitem> | ||||
| 	  <listitem><para>unmask()</para></listitem> | ||||
| 	  <listitem><para>retrigger() - Optional</para></listitem> | ||||
| 	  <listitem><para>set_type() - Optional</para></listitem> | ||||
| 	  <listitem><para>set_wake() - Optional</para></listitem> | ||||
| 	  </itemizedlist> | ||||
| 	These primitives are strictly intended to mean what they say: ack means | ||||
| 	ACK, masking means masking of an IRQ line, etc. It is up to the flow | ||||
| 	handler(s) to use these basic units of lowlevel functionality. | ||||
| 	</para> | ||||
|     </sect1> | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="doirq"> | ||||
|      <title>__do_IRQ entry point</title> | ||||
|      <para> | ||||
|  	The original implementation __do_IRQ() is an alternative entry | ||||
| 	point for all types of interrupts. | ||||
|      </para> | ||||
|      <para> | ||||
| 	This handler turned out to be not suitable for all | ||||
| 	interrupt hardware and was therefore reimplemented with split | ||||
| 	functionality for egde/level/simple/percpu interrupts. This is not | ||||
| 	only a functional optimization. It also shortens code paths for | ||||
| 	interrupts. | ||||
|       </para> | ||||
|       <para> | ||||
| 	To make use of the split implementation, replace the call to | ||||
| 	__do_IRQ by a call to desc->chip->handle_irq() and associate | ||||
|         the appropriate handler function to desc->chip->handle_irq(). | ||||
| 	In most cases the generic handler implementations should | ||||
| 	be sufficient. | ||||
|      </para> | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="locking"> | ||||
|      <title>Locking on SMP</title> | ||||
|      <para> | ||||
| 	The locking of chip registers is up to the architecture that | ||||
| 	defines the chip primitives. There is a chip->lock field that can be used | ||||
| 	for serialization, but the generic layer does not touch it. The per-irq | ||||
| 	structure is protected via desc->lock, by the generic layer. | ||||
|      </para> | ||||
|   </chapter> | ||||
|   <chapter id="structs"> | ||||
|      <title>Structures</title> | ||||
|      <para> | ||||
|      This chapter contains the autogenerated documentation of the structures which are | ||||
|      used in the generic IRQ layer. | ||||
|      </para> | ||||
| !Iinclude/linux/irq.h | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="pubfunctions"> | ||||
|      <title>Public Functions Provided</title> | ||||
|      <para> | ||||
|      This chapter contains the autogenerated documentation of the kernel API functions | ||||
|       which are exported. | ||||
|      </para> | ||||
| !Ekernel/irq/manage.c | ||||
| !Ekernel/irq/chip.c | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="intfunctions"> | ||||
|      <title>Internal Functions Provided</title> | ||||
|      <para> | ||||
|      This chapter contains the autogenerated documentation of the internal functions. | ||||
|      </para> | ||||
| !Ikernel/irq/handle.c | ||||
| !Ikernel/irq/chip.c | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="credits"> | ||||
|      <title>Credits</title> | ||||
| 	<para> | ||||
| 		The following people have contributed to this document: | ||||
| 		<orderedlist> | ||||
| 			<listitem><para>Thomas Gleixner<email>tglx@linutronix.de</email></para></listitem> | ||||
| 			<listitem><para>Ingo Molnar<email>mingo@elte.hu</email></para></listitem> | ||||
| 		</orderedlist> | ||||
| 	</para> | ||||
|   </chapter> | ||||
| </book> | ||||
| @ -348,11 +348,6 @@ X!Earch/i386/kernel/mca.c | ||||
|      </sect1> | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="devfs"> | ||||
|      <title>The Device File System</title> | ||||
| !Efs/devfs/base.c | ||||
|   </chapter> | ||||
| 
 | ||||
|   <chapter id="sysfs"> | ||||
|      <title>The Filesystem for Exporting Kernel Objects</title> | ||||
| !Efs/sysfs/file.c | ||||
|  | ||||
| @ -189,9 +189,9 @@ static unsigned long baseaddr; | ||||
| 	<sect1> | ||||
| 		<title>Partition defines</title> | ||||
| 		<para> | ||||
| 			If you want to divide your device into parititions, then | ||||
| 			enable the configuration switch CONFIG_MTD_PARITIONS and define | ||||
| 			a paritioning scheme suitable to your board. | ||||
| 			If you want to divide your device into partitions, then | ||||
| 			enable the configuration switch CONFIG_MTD_PARTITIONS and define | ||||
| 			a partitioning scheme suitable to your board. | ||||
| 		</para> | ||||
| 		<programlisting> | ||||
| #define NUM_PARTITIONS 2 | ||||
|  | ||||
| @ -976,7 +976,7 @@ static int camera_close(struct video_device *dev) | ||||
|   <title>Interrupt Handling</title> | ||||
|   <para> | ||||
|         Our example handler is for an ISA bus device. If it was PCI you would be | ||||
|         able to share the interrupt and would have set SA_SHIRQ to indicate a  | ||||
|         able to share the interrupt and would have set IRQF_SHARED to indicate a | ||||
|         shared IRQ. We pass the device pointer as the interrupt routine argument. We | ||||
|         don't need to since we only support one card but doing this will make it | ||||
|         easier to upgrade the driver for multiple devices in the future. | ||||
|  | ||||
| @ -10,7 +10,7 @@ standard for controlling intelligent devices that monitor a system. | ||||
| It provides for dynamic discovery of sensors in the system and the | ||||
| ability to monitor the sensors and be informed when the sensor's | ||||
| values change or go outside certain boundaries.  It also has a | ||||
| standardized database for field-replacable units (FRUs) and a watchdog | ||||
| standardized database for field-replaceable units (FRUs) and a watchdog | ||||
| timer. | ||||
| 
 | ||||
| To use this, you need an interface to an IPMI controller in your | ||||
| @ -64,7 +64,7 @@ situation, you need to read the section below named 'The SI Driver' or | ||||
| IPMI defines a standard watchdog timer.  You can enable this with the | ||||
| 'IPMI Watchdog Timer' config option.  If you compile the driver into | ||||
| the kernel, then via a kernel command-line option you can have the | ||||
| watchdog timer start as soon as it intitializes.  It also have a lot | ||||
| watchdog timer start as soon as it initializes.  It also have a lot | ||||
| of other options, see the 'Watchdog' section below for more details. | ||||
| Note that you can also have the watchdog continue to run if it is | ||||
| closed (by default it is disabled on close).  Go into the 'Watchdog | ||||
|  | ||||
							
								
								
									
										22
									
								
								Documentation/IRQ.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Documentation/IRQ.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| What is an IRQ? | ||||
| 
 | ||||
| An IRQ is an interrupt request from a device. | ||||
| Currently they can come in over a pin, or over a packet. | ||||
| Several devices may be connected to the same pin thus | ||||
| sharing an IRQ. | ||||
| 
 | ||||
| An IRQ number is a kernel identifier used to talk about a hardware | ||||
| interrupt source.  Typically this is an index into the global irq_desc | ||||
| array, but except for what linux/interrupt.h implements the details | ||||
| are architecture specific. | ||||
| 
 | ||||
| An IRQ number is an enumeration of the possible interrupt sources on a | ||||
| machine.  Typically what is enumerated is the number of input pins on | ||||
| all of the interrupt controller in the system.  In the case of ISA | ||||
| what is enumerated are the 16 input pins on the two i8259 interrupt | ||||
| controllers. | ||||
| 
 | ||||
| Architectures can assign additional meaning to the IRQ numbers, and | ||||
| are encouraged to in the case  where there is any manual configuration | ||||
| of the hardware involved.  The ISA IRQs are a classic example of | ||||
| assigning this kind of additional meaning. | ||||
| @ -78,9 +78,9 @@ also known as "System Drives", and Drive Groups are also called "Packs".  Both | ||||
| terms are in use in the Mylex documentation; I have chosen to standardize on | ||||
| the more generic "Logical Drive" and "Drive Group". | ||||
| 
 | ||||
| DAC960 RAID disk devices are named in the style of the Device File System | ||||
| (DEVFS).  The device corresponding to Logical Drive D on Controller C is | ||||
| referred to as /dev/rd/cCdD, and the partitions are called /dev/rd/cCdDp1 | ||||
| DAC960 RAID disk devices are named in the style of the obsolete Device File | ||||
| System (DEVFS).  The device corresponding to Logical Drive D on Controller C | ||||
| is referred to as /dev/rd/cCdD, and the partitions are called /dev/rd/cCdDp1 | ||||
| through /dev/rd/cCdDp7.  For example, partition 3 of Logical Drive 5 on | ||||
| Controller 2 is referred to as /dev/rd/c2d5p3.  Note that unlike with SCSI | ||||
| disks the device names will not change in the event of a disk drive failure. | ||||
|  | ||||
| @ -85,7 +85,7 @@ IXP4xx provides two methods of accessing PCI memory space: | ||||
| 2) If > 64MB of memory space is required, the IXP4xx can be  | ||||
|    configured to use indirect registers to access PCI This allows  | ||||
|    for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus.  | ||||
|    The disadvantadge of this is that every PCI access requires  | ||||
|    The disadvantage of this is that every PCI access requires  | ||||
|    three local register accesses plus a spinlock, but in some  | ||||
|    cases the performance hit is acceptable. In addition, you cannot  | ||||
|    mmap() PCI devices in this case due to the indirect nature | ||||
|  | ||||
| @ -2,7 +2,7 @@ NOTE:  This driver is obsolete.  Digi provides a 2.6 driver (dgdm) at | ||||
| http://www.digi.com for PCI cards.  They no longer maintain this driver, | ||||
| and have no 2.6 driver for ISA cards. | ||||
| 
 | ||||
| This driver requires a number of user-space tools.  They can be aquired from | ||||
| This driver requires a number of user-space tools.  They can be acquired from | ||||
| http://www.digi.com, but only works with 2.4 kernels. | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -6,17 +6,6 @@ be removed from this file. | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	devfs | ||||
| When:	July 2005 | ||||
| Files:	fs/devfs/*, include/linux/devfs_fs*.h and assorted devfs | ||||
| 	function calls throughout the kernel tree | ||||
| Why:	It has been unmaintained for a number of years, has unfixable | ||||
| 	races, contains a naming policy within the kernel that is | ||||
| 	against the LSB, and can be replaced by using udev. | ||||
| Who:	Greg Kroah-Hartman <greg@kroah.com> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	RAW driver (CONFIG_RAW_DRIVER) | ||||
| When:	December 2005 | ||||
| Why:	declared obsolete since kernel 2.6.3 | ||||
| @ -132,16 +121,6 @@ Who:	NeilBrown <neilb@suse.de> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	au1x00_uart driver | ||||
| When:	January 2006 | ||||
| Why:	The 8250 serial driver now has the ability to deal with the differences | ||||
| 	between the standard 8250 family of UARTs and their slightly strange | ||||
| 	brother on Alchemy SOCs.  The loss of features is not considered an | ||||
| 	issue. | ||||
| Who:	Ralf Baechle <ralf@linux-mips.org> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:   eepro100 network driver | ||||
| When:   January 2007 | ||||
| Why:    replaced by the e100 driver | ||||
| @ -234,3 +213,56 @@ Why:	The interface no longer has any callers left in the kernel. It | ||||
| Who:	Nick Piggin <npiggin@suse.de> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	Support for the MIPS EV96100 evaluation board | ||||
| When:	September 2006 | ||||
| Why:	Does no longer build since at least November 15, 2003, apparently | ||||
| 	no userbase left. | ||||
| Who:	Ralf Baechle <ralf@linux-mips.org> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	Support for the Momentum / PMC-Sierra Jaguar ATX evaluation board | ||||
| When:	September 2006 | ||||
| Why:	Does no longer build since quite some time, and was never popular, | ||||
| 	due to the platform being replaced by successor models.  Apparently | ||||
| 	no user base left.  It also is one of the last users of | ||||
| 	WANT_PAGE_VIRTUAL. | ||||
| Who:	Ralf Baechle <ralf@linux-mips.org> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	Support for the Momentum Ocelot, Ocelot 3, Ocelot C and Ocelot G | ||||
| When:	September 2006 | ||||
| Why:	Some do no longer build and apparently there is no user base left | ||||
| 	for these platforms. | ||||
| Who:	Ralf Baechle <ralf@linux-mips.org> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	Support for MIPS Technologies' Altas and SEAD evaluation board | ||||
| When:	September 2006 | ||||
| Why:	Some do no longer build and apparently there is no user base left | ||||
| 	for these platforms.  Hardware out of production since several years. | ||||
| Who:	Ralf Baechle <ralf@linux-mips.org> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	Support for the IT8172-based platforms, ITE 8172G and Globespan IVR | ||||
| When:	September 2006 | ||||
| Why:	Code does no longer build since at least 2.6.0,  apparently there is | ||||
| 	no user base left for these platforms.  Hardware out of production | ||||
| 	since several years and hardly a trace of the manufacturer left on | ||||
| 	the net. | ||||
| Who:	Ralf Baechle <ralf@linux-mips.org> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	Interrupt only SA_* flags | ||||
| When:	Januar 2007 | ||||
| Why:	The interrupt related SA_* flags are replaced by IRQF_* to move them | ||||
| 	out of the signal namespace. | ||||
| 
 | ||||
| Who:	Thomas Gleixner <tglx@linutronix.de> | ||||
| 
 | ||||
| --------------------------- | ||||
|  | ||||
| @ -264,6 +264,15 @@ static struct config_item_type simple_child_type = { | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| struct simple_children { | ||||
| 	struct config_group group; | ||||
| }; | ||||
| 
 | ||||
| static inline struct simple_children *to_simple_children(struct config_item *item) | ||||
| { | ||||
| 	return item ? container_of(to_config_group(item), struct simple_children, group) : NULL; | ||||
| } | ||||
| 
 | ||||
| static struct config_item *simple_children_make_item(struct config_group *group, const char *name) | ||||
| { | ||||
| 	struct simple_child *simple_child; | ||||
| @ -304,7 +313,13 @@ static ssize_t simple_children_attr_show(struct config_item *item, | ||||
| "items have only one attribute that is readable and writeable.\n"); | ||||
| } | ||||
| 
 | ||||
| static void simple_children_release(struct config_item *item) | ||||
| { | ||||
| 	kfree(to_simple_children(item)); | ||||
| } | ||||
| 
 | ||||
| static struct configfs_item_operations simple_children_item_ops = { | ||||
| 	.release 	= simple_children_release, | ||||
| 	.show_attribute	= simple_children_attr_show, | ||||
| }; | ||||
| 
 | ||||
| @ -345,10 +360,6 @@ static struct configfs_subsystem simple_children_subsys = { | ||||
|  * children of its own. | ||||
|  */ | ||||
| 
 | ||||
| struct simple_children { | ||||
| 	struct config_group group; | ||||
| }; | ||||
| 
 | ||||
| static struct config_group *group_children_make_group(struct config_group *group, const char *name) | ||||
| { | ||||
| 	struct simple_children *simple_children; | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,40 +0,0 @@ | ||||
| 		Device File System (devfs) ToDo List | ||||
| 
 | ||||
| 		Richard Gooch <rgooch@atnf.csiro.au> | ||||
| 
 | ||||
| 			      3-JUL-2000 | ||||
| 
 | ||||
| This is a list of things to be done for better devfs support in the | ||||
| Linux kernel. If you'd like to contribute to the devfs, please have a | ||||
| look at this list for anything that is unallocated. Also, if there are | ||||
| items missing (surely), please contact me so I can add them to the | ||||
| list (preferably with your name attached to them:-). | ||||
| 
 | ||||
| 
 | ||||
| - >256 ptys | ||||
|   Thanks to C. Scott Ananian <cananian@alumni.princeton.edu> | ||||
| 
 | ||||
| - Amiga floppy driver (drivers/block/amiflop.c) | ||||
| 
 | ||||
| - Atari floppy driver (drivers/block/ataflop.c) | ||||
| 
 | ||||
| - SWIM3 (Super Woz Integrated Machine 3) floppy driver (drivers/block/swim3.c) | ||||
| 
 | ||||
| - Amiga ZorroII ramdisc driver (drivers/block/z2ram.c) | ||||
| 
 | ||||
| - Parallel port ATAPI CD-ROM (drivers/block/paride/pcd.c) | ||||
| 
 | ||||
| - Parallel port ATAPI floppy (drivers/block/paride/pf.c) | ||||
| 
 | ||||
| - AP1000 block driver (drivers/ap1000/ap.c, drivers/ap1000/ddv.c) | ||||
| 
 | ||||
| - Archimedes floppy (drivers/acorn/block/fd1772.c) | ||||
| 
 | ||||
| - MFM hard drive (drivers/acorn/block/mfmhd.c) | ||||
| 
 | ||||
| - I2O block device (drivers/message/i2o/i2o_block.c) | ||||
| 
 | ||||
| - ST-RAM device (arch/m68k/atari/stram.c) | ||||
| 
 | ||||
| - Raw devices | ||||
| 
 | ||||
| @ -1,65 +0,0 @@ | ||||
| /* -*- auto-fill -*-                                                         */ | ||||
| 
 | ||||
| 		Device File System (devfs) Boot Options | ||||
| 
 | ||||
| 		Richard Gooch <rgooch@atnf.csiro.au> | ||||
| 
 | ||||
| 			      18-AUG-2001 | ||||
| 
 | ||||
| 
 | ||||
| When CONFIG_DEVFS_DEBUG is enabled, you can pass several boot options | ||||
| to the kernel to debug devfs. The boot options are prefixed by | ||||
| "devfs=", and are separated by commas. Spaces are not allowed. The | ||||
| syntax looks like this: | ||||
| 
 | ||||
| devfs=<option1>,<option2>,<option3> | ||||
| 
 | ||||
| and so on. For example, if you wanted to turn on debugging for module | ||||
| load requests and device registration, you would do: | ||||
| 
 | ||||
| devfs=dmod,dreg | ||||
| 
 | ||||
| You may prefix "no" to any option. This will invert the option. | ||||
| 
 | ||||
| 
 | ||||
| Debugging Options | ||||
| ================= | ||||
| 
 | ||||
| These requires CONFIG_DEVFS_DEBUG to be enabled. | ||||
| Note that all debugging options have 'd' as the first character. By | ||||
| default all options are off. All debugging output is sent to the | ||||
| kernel logs. The debugging options do not take effect until the devfs | ||||
| version message appears (just prior to the root filesystem being | ||||
| mounted). | ||||
| 
 | ||||
| These are the options: | ||||
| 
 | ||||
| dmod		print module load requests to <request_module> | ||||
| 
 | ||||
| dreg		print device register requests to <devfs_register> | ||||
| 
 | ||||
| dunreg		print device unregister requests to <devfs_unregister> | ||||
| 
 | ||||
| dchange		print device change requests to <devfs_set_flags> | ||||
| 
 | ||||
| dilookup	print inode lookup requests | ||||
| 
 | ||||
| diget		print VFS inode allocations | ||||
| 
 | ||||
| diunlink	print inode unlinks | ||||
| 
 | ||||
| dichange	print inode changes | ||||
| 
 | ||||
| dimknod		print calls to mknod(2) | ||||
| 
 | ||||
| dall		some debugging turned on | ||||
| 
 | ||||
| 
 | ||||
| Other Options | ||||
| ============= | ||||
| 
 | ||||
| These control the default behaviour of devfs. The options are: | ||||
| 
 | ||||
| mount		mount devfs onto /dev at boot time | ||||
| 
 | ||||
| only		disable non-devfs device nodes for devfs-capable drivers | ||||
| @ -67,8 +67,7 @@ initrd adds the following new options: | ||||
|     as the last process has closed it, all data is freed and /dev/initrd | ||||
|     can't be opened anymore. | ||||
| 
 | ||||
|   root=/dev/ram0   (without devfs) | ||||
|   root=/dev/rd/0   (with devfs) | ||||
|   root=/dev/ram0 | ||||
| 
 | ||||
|     initrd is mounted as root, and the normal boot procedure is followed, | ||||
|     with the RAM disk still mounted as root. | ||||
| @ -90,8 +89,7 @@ you're building an install floppy), the root file system creation | ||||
| procedure should create the /initrd directory. | ||||
| 
 | ||||
| If initrd will not be mounted in some cases, its content is still | ||||
| accessible if the following device has been created (note that this | ||||
| does not work if using devfs): | ||||
| accessible if the following device has been created: | ||||
| 
 | ||||
| # mknod /dev/initrd b 1 250  | ||||
| # chmod 400 /dev/initrd | ||||
| @ -119,8 +117,7 @@ We'll describe the loopback device method: | ||||
|     (if space is critical, you may want to use the Minix FS instead of Ext2) | ||||
|  3) mount the file system, e.g. | ||||
|     # mount -t ext2 -o loop initrd /mnt | ||||
|  4) create the console device (not necessary if using devfs, but it can't | ||||
|     hurt to do it anyway): | ||||
|  4) create the console device: | ||||
|     # mkdir /mnt/dev | ||||
|     # mknod /mnt/dev/console c 5 1 | ||||
|  5) copy all the files that are needed to properly use the initrd | ||||
| @ -152,12 +149,7 @@ have to be given: | ||||
| 
 | ||||
|   root=/dev/ram0 init=/linuxrc rw | ||||
| 
 | ||||
| if not using devfs, or | ||||
| 
 | ||||
|   root=/dev/rd/0 init=/linuxrc rw | ||||
| 
 | ||||
| if using devfs. (rw is only necessary if writing to the initrd file | ||||
| system.) | ||||
| (rw is only necessary if writing to the initrd file system.) | ||||
| 
 | ||||
| With LOADLIN, you simply execute | ||||
| 
 | ||||
| @ -217,9 +209,9 @@ following command: | ||||
| # exec chroot . what-follows <dev/console >dev/console 2>&1 | ||||
| 
 | ||||
| Where what-follows is a program under the new root, e.g. /sbin/init | ||||
| If the new root file system will be used with devfs and has no valid | ||||
| /dev directory, devfs must be mounted before invoking chroot in order to | ||||
| provide /dev/console. | ||||
| If the new root file system will be used with udev and has no valid | ||||
| /dev directory, udev must be initialized before invoking chroot in order | ||||
| to provide /dev/console. | ||||
| 
 | ||||
| Note: implementation details of pivot_root may change with time. In order | ||||
| to ensure compatibility, the following points should be observed: | ||||
| @ -236,7 +228,7 @@ Now, the initrd can be unmounted and the memory allocated by the RAM | ||||
| disk can be freed: | ||||
| 
 | ||||
| # umount /initrd | ||||
| # blockdev --flushbufs /dev/ram0    # /dev/rd/0 if using devfs | ||||
| # blockdev --flushbufs /dev/ram0 | ||||
| 
 | ||||
| It is also possible to use initrd with an NFS-mounted root, see the | ||||
| pivot_root(8) man page for details. | ||||
|  | ||||
| @ -119,7 +119,6 @@ Code	Seq#	Include File		Comments | ||||
| 'c'	00-7F	linux/comstats.h	conflict! | ||||
| 'c'	00-7F	linux/coda.h		conflict! | ||||
| 'd'	00-FF	linux/char/drm/drm/h	conflict! | ||||
| 'd'	00-1F	linux/devfs_fs.h	conflict! | ||||
| 'd'	00-DF	linux/video_decoder.h	conflict! | ||||
| 'd'	F0-FF	linux/digi1.h | ||||
| 'e'	all	linux/digi1.h		conflict! | ||||
|  | ||||
| @ -35,7 +35,6 @@ parameter is applicable: | ||||
| 	APM	Advanced Power Management support is enabled. | ||||
| 	AX25	Appropriate AX.25 support is enabled. | ||||
| 	CD	Appropriate CD support is enabled. | ||||
| 	DEVFS	devfs support is enabled. | ||||
| 	DRM	Direct Rendering Management support is enabled. | ||||
| 	EDD	BIOS Enhanced Disk Drive Services (EDD) is enabled | ||||
| 	EFI	EFI Partitioning (GPT) is enabled | ||||
| @ -440,9 +439,6 @@ running once the system is up. | ||||
| 			Format: <area>[,<node>] | ||||
| 			See also Documentation/networking/decnet.txt. | ||||
| 
 | ||||
| 	devfs=		[DEVFS] | ||||
| 			See Documentation/filesystems/devfs/boot-options. | ||||
| 
 | ||||
| 	dhash_entries=	[KNL] | ||||
| 			Set number of hash buckets for dentry cache. | ||||
| 
 | ||||
| @ -1689,9 +1685,14 @@ running once the system is up. | ||||
| 			decrease the size and leave more room for directly | ||||
| 			mapped kernel RAM. | ||||
| 
 | ||||
| 	vmhalt=		[KNL,S390] | ||||
| 	vmhalt=		[KNL,S390] Perform z/VM CP command after system halt. | ||||
| 			Format: <command> | ||||
| 
 | ||||
| 	vmpoff=		[KNL,S390] | ||||
| 	vmpanic=	[KNL,S390] Perform z/VM CP command after kernel panic. | ||||
| 			Format: <command> | ||||
| 
 | ||||
| 	vmpoff=		[KNL,S390] Perform z/VM CP command after power off. | ||||
| 			Format: <command> | ||||
| 
 | ||||
| 	waveartist=	[HW,OSS] | ||||
| 			Format: <io>,<irq>,<dma>,<dma2> | ||||
|  | ||||
| @ -3,16 +3,23 @@ | ||||
| 			      =================== | ||||
| 
 | ||||
| The key request service is part of the key retention service (refer to | ||||
| Documentation/keys.txt). This document explains more fully how that the | ||||
| requesting algorithm works. | ||||
| Documentation/keys.txt).  This document explains more fully how the requesting | ||||
| algorithm works. | ||||
| 
 | ||||
| The process starts by either the kernel requesting a service by calling | ||||
| request_key(): | ||||
| request_key*(): | ||||
| 
 | ||||
| 	struct key *request_key(const struct key_type *type, | ||||
| 				const char *description, | ||||
| 				const char *callout_string); | ||||
| 
 | ||||
| or: | ||||
| 
 | ||||
| 	struct key *request_key_with_auxdata(const struct key_type *type, | ||||
| 					     const char *description, | ||||
| 					     const char *callout_string, | ||||
| 					     void *aux); | ||||
| 
 | ||||
| Or by userspace invoking the request_key system call: | ||||
| 
 | ||||
| 	key_serial_t request_key(const char *type, | ||||
| @ -20,16 +27,26 @@ Or by userspace invoking the request_key system call: | ||||
| 				 const char *callout_info, | ||||
| 				 key_serial_t dest_keyring); | ||||
| 
 | ||||
| The main difference between the two access points is that the in-kernel | ||||
| interface does not need to link the key to a keyring to prevent it from being | ||||
| immediately destroyed. The kernel interface returns a pointer directly to the | ||||
| key, and it's up to the caller to destroy the key. | ||||
| The main difference between the access points is that the in-kernel interface | ||||
| does not need to link the key to a keyring to prevent it from being immediately | ||||
| destroyed.  The kernel interface returns a pointer directly to the key, and | ||||
| it's up to the caller to destroy the key. | ||||
| 
 | ||||
| The request_key_with_auxdata() call is like the in-kernel request_key() call, | ||||
| except that it permits auxiliary data to be passed to the upcaller (the default | ||||
| is NULL).  This is only useful for those key types that define their own upcall | ||||
| mechanism rather than using /sbin/request-key. | ||||
| 
 | ||||
| The userspace interface links the key to a keyring associated with the process | ||||
| to prevent the key from going away, and returns the serial number of the key to | ||||
| the caller. | ||||
| 
 | ||||
| 
 | ||||
| The following example assumes that the key types involved don't define their | ||||
| own upcall mechanisms.  If they do, then those should be substituted for the | ||||
| forking and execution of /sbin/request-key. | ||||
| 
 | ||||
| 
 | ||||
| =========== | ||||
| THE PROCESS | ||||
| =========== | ||||
| @ -40,8 +57,8 @@ A request proceeds in the following manner: | ||||
|      interface]. | ||||
| 
 | ||||
|  (2) request_key() searches the process's subscribed keyrings to see if there's | ||||
|      a suitable key there. If there is, it returns the key. If there isn't, and | ||||
|      callout_info is not set, an error is returned. Otherwise the process | ||||
|      a suitable key there.  If there is, it returns the key.  If there isn't, | ||||
|      and callout_info is not set, an error is returned.  Otherwise the process | ||||
|      proceeds to the next step. | ||||
| 
 | ||||
|  (3) request_key() sees that A doesn't have the desired key yet, so it creates | ||||
| @ -62,7 +79,7 @@ A request proceeds in the following manner: | ||||
|      instantiation. | ||||
| 
 | ||||
|  (7) The program may want to access another key from A's context (say a | ||||
|      Kerberos TGT key). It just requests the appropriate key, and the keyring | ||||
|      Kerberos TGT key).  It just requests the appropriate key, and the keyring | ||||
|      search notes that the session keyring has auth key V in its bottom level. | ||||
| 
 | ||||
|      This will permit it to then search the keyrings of process A with the | ||||
| @ -79,10 +96,11 @@ A request proceeds in the following manner: | ||||
| (10) The program then exits 0 and request_key() deletes key V and returns key | ||||
|      U to the caller. | ||||
| 
 | ||||
| This also extends further. If key W (step 7 above) didn't exist, key W would be | ||||
| created uninstantiated, another auth key (X) would be created (as per step 3) | ||||
| and another copy of /sbin/request-key spawned (as per step 4); but the context | ||||
| specified by auth key X will still be process A, as it was in auth key V. | ||||
| This also extends further.  If key W (step 7 above) didn't exist, key W would | ||||
| be created uninstantiated, another auth key (X) would be created (as per step | ||||
| 3) and another copy of /sbin/request-key spawned (as per step 4); but the | ||||
| context specified by auth key X will still be process A, as it was in auth key | ||||
| V. | ||||
| 
 | ||||
| This is because process A's keyrings can't simply be attached to | ||||
| /sbin/request-key at the appropriate places because (a) execve will discard two | ||||
| @ -118,17 +136,17 @@ A search of any particular keyring proceeds in the following fashion: | ||||
| 
 | ||||
|  (2) It considers all the non-keyring keys within that keyring and, if any key | ||||
|      matches the criteria specified, calls key_permission(SEARCH) on it to see | ||||
|      if the key is allowed to be found. If it is, that key is returned; if | ||||
|      if the key is allowed to be found.  If it is, that key is returned; if | ||||
|      not, the search continues, and the error code is retained if of higher | ||||
|      priority than the one currently set. | ||||
| 
 | ||||
|  (3) It then considers all the keyring-type keys in the keyring it's currently | ||||
|      searching. It calls key_permission(SEARCH) on each keyring, and if this | ||||
|      searching.  It calls key_permission(SEARCH) on each keyring, and if this | ||||
|      grants permission, it recurses, executing steps (2) and (3) on that | ||||
|      keyring. | ||||
| 
 | ||||
| The process stops immediately a valid key is found with permission granted to | ||||
| use it. Any error from a previous match attempt is discarded and the key is | ||||
| use it.  Any error from a previous match attempt is discarded and the key is | ||||
| returned. | ||||
| 
 | ||||
| When search_process_keyrings() is invoked, it performs the following searches | ||||
| @ -153,7 +171,7 @@ The moment one succeeds, all pending errors are discarded and the found key is | ||||
| returned. | ||||
| 
 | ||||
| Only if all these fail does the whole thing fail with the highest priority | ||||
| error. Note that several errors may have come from LSM. | ||||
| error.  Note that several errors may have come from LSM. | ||||
| 
 | ||||
| The error priority is: | ||||
| 
 | ||||
|  | ||||
| @ -780,6 +780,17 @@ payload contents" for more information. | ||||
|     See also Documentation/keys-request-key.txt. | ||||
| 
 | ||||
| 
 | ||||
| (*) To search for a key, passing auxiliary data to the upcaller, call: | ||||
| 
 | ||||
| 	struct key *request_key_with_auxdata(const struct key_type *type, | ||||
| 					     const char *description, | ||||
| 					     const char *callout_string, | ||||
| 					     void *aux); | ||||
| 
 | ||||
|     This is identical to request_key(), except that the auxiliary data is | ||||
|     passed to the key_type->request_key() op if it exists. | ||||
| 
 | ||||
| 
 | ||||
| (*) When it is no longer required, the key should be released using: | ||||
| 
 | ||||
| 	void key_put(struct key *key); | ||||
| @ -1031,6 +1042,24 @@ The structure has a number of fields, some of which are mandatory: | ||||
|      as might happen when the userspace buffer is accessed. | ||||
| 
 | ||||
| 
 | ||||
|  (*) int (*request_key)(struct key *key, struct key *authkey, const char *op, | ||||
| 			void *aux); | ||||
| 
 | ||||
|      This method is optional.  If provided, request_key() and | ||||
|      request_key_with_auxdata() will invoke this function rather than | ||||
|      upcalling to /sbin/request-key to operate upon a key of this type. | ||||
| 
 | ||||
|      The aux parameter is as passed to request_key_with_auxdata() or is NULL | ||||
|      otherwise.  Also passed are the key to be operated upon, the | ||||
|      authorisation key for this operation and the operation type (currently | ||||
|      only "create"). | ||||
| 
 | ||||
|      This function should return only when the upcall is complete.  Upon return | ||||
|      the authorisation key will be revoked, and the target key will be | ||||
|      negatively instantiated if it is still uninstantiated.  The error will be | ||||
|      returned to the caller of request_key*(). | ||||
| 
 | ||||
| 
 | ||||
| ============================ | ||||
| REQUEST-KEY CALLBACK SERVICE | ||||
| ============================ | ||||
|  | ||||
| @ -602,7 +602,7 @@ Consider the following sequence of events: | ||||
| 
 | ||||
| This sequence of events is committed to the memory coherence system in an order | ||||
| that the rest of the system might perceive as the unordered set of { STORE A, | ||||
| STORE B, STORE C } all occuring before the unordered set of { STORE D, STORE E | ||||
| STORE B, STORE C } all occurring before the unordered set of { STORE D, STORE E | ||||
| }: | ||||
| 
 | ||||
| 	+-------+       :      : | ||||
|  | ||||
| @ -74,7 +74,7 @@ Examples: | ||||
|  pgset "pkt_size 9014"   sets packet size to 9014 | ||||
|  pgset "frags 5"         packet will consist of 5 fragments | ||||
|  pgset "count 200000"    sets number of packets to send, set to zero | ||||
|                          for continious sends untill explicitl stopped. | ||||
|                          for continuous sends until explicitly stopped. | ||||
| 
 | ||||
|  pgset "delay 5000"      adds delay to hard_start_xmit(). nanoseconds | ||||
| 
 | ||||
|  | ||||
| @ -225,7 +225,7 @@ Generic flavors of pci_request_region() are request_mem_region() | ||||
| Use these for address resources that are not described by "normal" PCI | ||||
| interfaces (e.g. BAR). | ||||
| 
 | ||||
|    All interrupt handlers should be registered with SA_SHIRQ and use the devid | ||||
|    All interrupt handlers should be registered with IRQF_SHARED and use the devid | ||||
| to map IRQs to devices (remember that all PCI interrupts are shared). | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										32
									
								
								Documentation/pcmcia/crc32hash.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Documentation/pcmcia/crc32hash.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| /* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */ | ||||
| /* Usage example:
 | ||||
| $ ./crc32hash "Dual Speed" | ||||
| */ | ||||
| 
 | ||||
| #include <string.h> | ||||
| #include <stdio.h> | ||||
| #include <ctype.h> | ||||
| #include <stdlib.h> | ||||
| 
 | ||||
| unsigned int crc32(unsigned char const *p, unsigned int len) | ||||
| { | ||||
| 	int i; | ||||
| 	unsigned int crc = 0; | ||||
| 	while (len--) { | ||||
| 		crc ^= *p++; | ||||
| 		for (i = 0; i < 8; i++) | ||||
| 			crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); | ||||
| 	} | ||||
| 	return crc; | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char **argv) { | ||||
| 	unsigned int result; | ||||
| 	if (argc != 2) { | ||||
| 		printf("no string passed as argument\n"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	result = crc32(argv[1], strlen(argv[1])); | ||||
| 	printf("0x%x\n", result); | ||||
| 	return 0; | ||||
| } | ||||
| @ -27,37 +27,7 @@ pcmcia:m0149cC1ABf06pfn00fn00pa725B842DpbF1EFEE84pc0877B627pd00000000 | ||||
| The hex value after "pa" is the hash of product ID string 1, after "pb" for | ||||
| string 2 and so on. | ||||
| 
 | ||||
| Alternatively, you can use this small tool to determine the crc32 hash. | ||||
| simply pass the string you want to evaluate as argument to this program, | ||||
| e.g. | ||||
| Alternatively, you can use crc32hash (see Documentation/pcmcia/crc32hash.c) | ||||
| to determine the crc32 hash.  Simply pass the string you want to evaluate | ||||
| as argument to this program, e.g.: | ||||
| $ ./crc32hash "Dual Speed" | ||||
| 
 | ||||
| ------------------------------------------------------------------------- | ||||
| /* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */ | ||||
| #include <string.h> | ||||
| #include <stdio.h> | ||||
| #include <ctype.h> | ||||
| #include <stdlib.h> | ||||
| 
 | ||||
| unsigned int crc32(unsigned char const *p, unsigned int len) | ||||
| { | ||||
| 	int i; | ||||
| 	unsigned int crc = 0; | ||||
| 	while (len--) { | ||||
| 		crc ^= *p++; | ||||
| 		for (i = 0; i < 8; i++) | ||||
| 			crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); | ||||
| 	} | ||||
| 	return crc; | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char **argv) { | ||||
| 	unsigned int result; | ||||
| 	if (argc != 2) { | ||||
| 		printf("no string passed as argument\n"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	result = crc32(argv[1], strlen(argv[1])); | ||||
| 	printf("0x%x\n", result); | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| @ -109,7 +109,7 @@ than the 33.33 MHz being in the PCI spec. | ||||
| 
 | ||||
| If you want to share the IRQ with another device and the driver refuses to | ||||
| do so, you might succeed with changing the DC390_IRQ type in tmscsim.c to  | ||||
| SA_SHIRQ | SA_INTERRUPT. | ||||
| IRQF_SHARED | IRQF_DISABLED. | ||||
| 
 | ||||
| 
 | ||||
| 3.Features | ||||
|  | ||||
| @ -472,6 +472,22 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
| 
 | ||||
|     The power-management is supported. | ||||
| 
 | ||||
|   Module snd-darla20 | ||||
|   ------------------ | ||||
| 
 | ||||
|     Module for Echoaudio Darla20 | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-darla24 | ||||
|   ------------------ | ||||
| 
 | ||||
|     Module for Echoaudio Darla24 | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-dt019x | ||||
|   ----------------- | ||||
| 
 | ||||
| @ -499,6 +515,14 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
| 
 | ||||
|     The power-management is supported. | ||||
| 
 | ||||
|   Module snd-echo3g | ||||
|   ----------------- | ||||
| 
 | ||||
|     Module for Echoaudio 3G cards (Gina3G/Layla3G) | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-emu10k1 | ||||
|   ------------------ | ||||
| 
 | ||||
| @ -657,6 +681,22 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
|      | ||||
|     The power-management is supported. | ||||
| 
 | ||||
|   Module snd-gina20 | ||||
|   ----------------- | ||||
| 
 | ||||
|     Module for Echoaudio Gina20 | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-gina24 | ||||
|   ----------------- | ||||
| 
 | ||||
|     Module for Echoaudio Gina24 | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-gusclassic | ||||
|   --------------------- | ||||
| 
 | ||||
| @ -760,12 +800,18 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
| 	  basic		fixed pin assignment w/o SPDIF | ||||
| 	  auto		auto-config reading BIOS (default) | ||||
| 
 | ||||
| 	ALC882/883/885 | ||||
| 	ALC882/885 | ||||
| 	  3stack-dig	3-jack with SPDIF I/O | ||||
| 	  6stck-dig	6-jack digital with SPDIF I/O | ||||
| 	  auto		auto-config reading BIOS (default) | ||||
| 
 | ||||
| 	ALC861 | ||||
| 	ALC883/888 | ||||
| 	  3stack-dig	3-jack with SPDIF I/O | ||||
| 	  6stack-dig	6-jack digital with SPDIF I/O | ||||
| 	  6stack-dig-demo  6-stack digital for Intel demo board | ||||
| 	  auto		auto-config reading BIOS (default) | ||||
| 
 | ||||
| 	ALC861/660 | ||||
| 	  3stack	3-jack | ||||
| 	  3stack-dig	3-jack with SPDIF I/O | ||||
| 	  6stack-dig	6-jack with SPDIF I/O | ||||
| @ -937,6 +983,30 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
| 	  driver isn't configured properly or you want to try another | ||||
| 	  type for testing. | ||||
| 
 | ||||
|   Module snd-indigo | ||||
|   ----------------- | ||||
| 
 | ||||
|     Module for Echoaudio Indigo | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-indigodj | ||||
|   ------------------- | ||||
| 
 | ||||
|     Module for Echoaudio Indigo DJ | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-indigoio | ||||
|   ------------------- | ||||
| 
 | ||||
|     Module for Echoaudio Indigo IO | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-intel8x0 | ||||
|   ------------------- | ||||
| 
 | ||||
| @ -1036,6 +1106,22 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
| 
 | ||||
|   Module snd-layla20 | ||||
|   ------------------ | ||||
| 
 | ||||
|     Module for Echoaudio Layla20 | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-layla24 | ||||
|   ------------------ | ||||
| 
 | ||||
|     Module for Echoaudio Layla24 | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-maestro3 | ||||
|   ------------------- | ||||
| 
 | ||||
| @ -1056,6 +1142,14 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
| 
 | ||||
|     The power-management is supported. | ||||
| 
 | ||||
|   Module snd-mia | ||||
|   --------------- | ||||
| 
 | ||||
|     Module for Echoaudio Mia | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-miro | ||||
|   --------------- | ||||
| 
 | ||||
| @ -1088,6 +1182,14 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | ||||
|     When no hotplug fw loader is available, you need to load the | ||||
|     firmware via mixartloader utility in alsa-tools package. | ||||
| 
 | ||||
|   Module snd-mona | ||||
|   --------------- | ||||
| 
 | ||||
|     Module for Echoaudio Mona | ||||
| 
 | ||||
|     This module supports multiple cards. | ||||
|     The driver requires the firmware loader support on kernel. | ||||
| 
 | ||||
|   Module snd-mpu401 | ||||
|   ----------------- | ||||
| 
 | ||||
|  | ||||
| @ -1149,7 +1149,7 @@ | ||||
|           } | ||||
|           chip->port = pci_resource_start(pci, 0); | ||||
|           if (request_irq(pci->irq, snd_mychip_interrupt, | ||||
|                           SA_INTERRUPT|SA_SHIRQ, "My Chip", chip)) { | ||||
|                           IRQF_DISABLED|IRQF_SHARED, "My Chip", chip)) { | ||||
|                   printk(KERN_ERR "cannot grab irq %d\n", pci->irq); | ||||
|                   snd_mychip_free(chip); | ||||
|                   return -EBUSY; | ||||
| @ -1323,7 +1323,7 @@ | ||||
|           <programlisting> | ||||
| <![CDATA[ | ||||
|   if (request_irq(pci->irq, snd_mychip_interrupt, | ||||
|                   SA_INTERRUPT|SA_SHIRQ, "My Chip", chip)) { | ||||
|                   IRQF_DISABLED|IRQF_SHARED, "My Chip", chip)) { | ||||
|           printk(KERN_ERR "cannot grab irq %d\n", pci->irq); | ||||
|           snd_mychip_free(chip); | ||||
|           return -EBUSY; | ||||
| @ -1342,7 +1342,7 @@ | ||||
| 
 | ||||
|       <para> | ||||
|       On the PCI bus, the interrupts can be shared. Thus, | ||||
|       <constant>SA_SHIRQ</constant> is given as the interrupt flag of | ||||
|       <constant>IRQF_SHARED</constant> is given as the interrupt flag of | ||||
|       <function>request_irq()</function>.  | ||||
|       </para> | ||||
| 
 | ||||
| @ -3048,7 +3048,7 @@ struct _snd_pcm_runtime { | ||||
|         </para> | ||||
| 
 | ||||
|         <para> | ||||
|           If you aquire a spinlock in the interrupt handler, and the | ||||
|           If you acquire a spinlock in the interrupt handler, and the | ||||
|         lock is used in other pcm callbacks, too, then you have to | ||||
|         release the lock before calling | ||||
|         <function>snd_pcm_period_elapsed()</function>, because | ||||
|  | ||||
| @ -28,7 +28,6 @@ Currently, these files are in /proc/sys/vm: | ||||
| - block_dump | ||||
| - drop-caches | ||||
| - zone_reclaim_mode | ||||
| - zone_reclaim_interval | ||||
| - panic_on_oom | ||||
| 
 | ||||
| ============================================================== | ||||
| @ -167,18 +166,6 @@ use of files and builds up large slab caches. However, the slab | ||||
| shrink operation is global, may take a long time and free slabs | ||||
| in all nodes of the system. | ||||
| 
 | ||||
| ================================================================ | ||||
| 
 | ||||
| zone_reclaim_interval: | ||||
| 
 | ||||
| The time allowed for off node allocations after zone reclaim | ||||
| has failed to reclaim enough pages to allow a local allocation. | ||||
| 
 | ||||
| Time is set in seconds and set by default to 30 seconds. | ||||
| 
 | ||||
| Reduce the interval if undesired off node allocations occur. However, too | ||||
| frequent scans will have a negative impact onoff node allocation performance. | ||||
| 
 | ||||
| ============================================================= | ||||
| 
 | ||||
| panic_on_oom | ||||
|  | ||||
| @ -50,3 +50,4 @@ | ||||
|  49 -> PixelView PlayTV P7000                              [1554:4813] | ||||
|  50 -> NPG Tech Real TV FM Top 10                          [14f1:0842] | ||||
|  51 -> WinFast DTV2000 H                                   [107d:665e] | ||||
|  52 -> Geniatech DVB-S                                     [14f1:0084] | ||||
|  | ||||
							
								
								
									
										21
									
								
								MAINTAINERS
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								MAINTAINERS
									
									
									
									
									
								
							| @ -925,23 +925,21 @@ S:	Maintained | ||||
| 
 | ||||
| EDAC-CORE | ||||
| P:	Doug Thompson | ||||
| M:	norsk5@xmission.com, dthompson@linuxnetworx.com | ||||
| P:	Dave Peterson | ||||
| M:	dsp@llnl.gov, dave_peterson@pobox.com | ||||
| M:	norsk5@xmission.com | ||||
| L:	bluesmoke-devel@lists.sourceforge.net | ||||
| W:	bluesmoke.sourceforge.net | ||||
| S:	Maintained | ||||
| S:	Supported | ||||
| 
 | ||||
| EDAC-E752X | ||||
| P:	Dave Peterson | ||||
| M:	dsp@llnl.gov, dave_peterson@pobox.com | ||||
| P:	Mark Gross | ||||
| M:	mark.gross@intel.com | ||||
| L:	bluesmoke-devel@lists.sourceforge.net | ||||
| W:	bluesmoke.sourceforge.net | ||||
| S:	Maintained | ||||
| 
 | ||||
| EDAC-E7XXX | ||||
| P:	Dave Peterson | ||||
| M:	dsp@llnl.gov, dave_peterson@pobox.com | ||||
| P:	Doug Thompson | ||||
| M:	norsk5@xmission.com | ||||
| L:	bluesmoke-devel@lists.sourceforge.net | ||||
| W:	bluesmoke.sourceforge.net | ||||
| S:	Maintained | ||||
| @ -2557,13 +2555,6 @@ M:	thomas@winischhofer.net | ||||
| W:	http://www.winischhofer.at/linuxsisusbvga.shtml | ||||
| S:	Maintained | ||||
| 
 | ||||
| SMB FILESYSTEM | ||||
| P:	Urban Widmark | ||||
| M:	urban@teststation.com | ||||
| W:	http://samba.org/ | ||||
| L:	samba@samba.org | ||||
| S:	Maintained | ||||
| 
 | ||||
| SMC91x ETHERNET DRIVER | ||||
| P:	Nicolas Pitre | ||||
| M:	nico@cam.org | ||||
|  | ||||
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
									
									
									
									
								
							| @ -41,8 +41,9 @@ ifndef KBUILD_VERBOSE | ||||
|   KBUILD_VERBOSE = 0 | ||||
| endif | ||||
| 
 | ||||
| # Call sparse as part of compilation of C files
 | ||||
| # Use 'make C=1' to enable sparse checking
 | ||||
| # Call checker as part of compilation of C files
 | ||||
| # Use 'make C=1' to enable checking (sparse, by default)
 | ||||
| # Override with 'make C=1 CHECK=checker_executable CHECKFLAGS=....'
 | ||||
| 
 | ||||
| ifdef C | ||||
|   ifeq ("$(origin C)", "command line") | ||||
| @ -1060,8 +1061,8 @@ help: | ||||
| 
 | ||||
| 	@echo  '  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' | ||||
| 	@echo  '  make O=dir [targets] Locate all output files in "dir", including .config' | ||||
| 	@echo  '  make C=1   [targets] Check all c source with $$CHECK (sparse)' | ||||
| 	@echo  '  make C=2   [targets] Force check of all c source with $$CHECK (sparse)' | ||||
| 	@echo  '  make C=1   [targets] Check all c source with $$CHECK (sparse by default)' | ||||
| 	@echo  '  make C=2   [targets] Force check of all c source with $$CHECK' | ||||
| 	@echo  '' | ||||
| 	@echo  'Execute "make" or "make all" to build all targets marked with [*] ' | ||||
| 	@echo  'For further info see the ./README file' | ||||
| @ -1352,7 +1353,7 @@ quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN   $(wildcard $(rm-files)) | ||||
| 
 | ||||
| a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(AFLAGS_KERNEL) \
 | ||||
| 	  $(NOSTDINC_FLAGS) $(CPPFLAGS) \
 | ||||
| 	  $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) | ||||
| 	  $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o) | ||||
| 
 | ||||
| quiet_cmd_as_o_S = AS      $@ | ||||
| cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $< | ||||
|  | ||||
| @ -5,7 +5,6 @@ | ||||
|  * modules. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/string.h> | ||||
| #include <linux/user.h> | ||||
|  | ||||
| @ -5,7 +5,6 @@ | ||||
|  * non-0 I/O hose | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/pci.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/tty.h> | ||||
|  | ||||
| @ -4,7 +4,6 @@ | ||||
|  * Kernel entry-points. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <asm/asm-offsets.h> | ||||
| #include <asm/thread_info.h> | ||||
| #include <asm/pal.h> | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
|  *	linux/arch/alpha/kernel/gct.c | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/errno.h> | ||||
|  | ||||
| @ -7,7 +7,6 @@ | ||||
|  * the kernel global pointer and jump to the kernel entry-point. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <asm/system.h> | ||||
| #include <asm/asm-offsets.h> | ||||
| 
 | ||||
|  | ||||
| @ -10,7 +10,6 @@ | ||||
|  * should be easier. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/errno.h> | ||||
| @ -49,15 +48,15 @@ select_smp_affinity(unsigned int irq) | ||||
| 	static int last_cpu; | ||||
| 	int cpu = last_cpu + 1; | ||||
| 
 | ||||
| 	if (!irq_desc[irq].handler->set_affinity || irq_user_affinity[irq]) | ||||
| 	if (!irq_desc[irq].chip->set_affinity || irq_user_affinity[irq]) | ||||
| 		return 1; | ||||
| 
 | ||||
| 	while (!cpu_possible(cpu)) | ||||
| 		cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0); | ||||
| 	last_cpu = cpu; | ||||
| 
 | ||||
| 	irq_affinity[irq] = cpumask_of_cpu(cpu); | ||||
| 	irq_desc[irq].handler->set_affinity(irq, cpumask_of_cpu(cpu)); | ||||
| 	irq_desc[irq].affinity = cpumask_of_cpu(cpu); | ||||
| 	irq_desc[irq].chip->set_affinity(irq, cpumask_of_cpu(cpu)); | ||||
| 	return 0; | ||||
| } | ||||
| #endif /* CONFIG_SMP */ | ||||
| @ -93,14 +92,14 @@ show_interrupts(struct seq_file *p, void *v) | ||||
| 		for_each_online_cpu(j) | ||||
| 			seq_printf(p, "%10u ", kstat_cpu(j).irqs[irq]); | ||||
| #endif | ||||
| 		seq_printf(p, " %14s", irq_desc[irq].handler->typename); | ||||
| 		seq_printf(p, " %14s", irq_desc[irq].chip->typename); | ||||
| 		seq_printf(p, "  %c%s", | ||||
| 			(action->flags & SA_INTERRUPT)?'+':' ', | ||||
| 			(action->flags & IRQF_DISABLED)?'+':' ', | ||||
| 			action->name); | ||||
| 
 | ||||
| 		for (action=action->next; action; action = action->next) { | ||||
| 			seq_printf(p, ", %c%s", | ||||
| 				  (action->flags & SA_INTERRUPT)?'+':' ', | ||||
| 				  (action->flags & IRQF_DISABLED)?'+':' ', | ||||
| 				   action->name); | ||||
| 		} | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
|  * Alpha specific irq code. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/sched.h> | ||||
| #include <linux/irq.h> | ||||
| @ -215,7 +214,7 @@ static unsigned int rtc_startup(unsigned int irq) { return 0; } | ||||
| 
 | ||||
| struct irqaction timer_irqaction = { | ||||
| 	.handler	= timer_interrupt, | ||||
| 	.flags		= SA_INTERRUPT, | ||||
| 	.flags		= IRQF_DISABLED, | ||||
| 	.name		= "timer", | ||||
| }; | ||||
| 
 | ||||
| @ -233,7 +232,7 @@ void __init | ||||
| init_rtc_irq(void) | ||||
| { | ||||
| 	irq_desc[RTC_IRQ].status = IRQ_DISABLED; | ||||
| 	irq_desc[RTC_IRQ].handler = &rtc_irq_type; | ||||
| 	irq_desc[RTC_IRQ].chip = &rtc_irq_type; | ||||
| 	setup_irq(RTC_IRQ, &timer_irqaction); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -7,7 +7,6 @@ | ||||
|  * Started hacking from linux-2.3.30pre6/arch/i386/kernel/i8259.c. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/cache.h> | ||||
| #include <linux/sched.h> | ||||
| @ -109,7 +108,7 @@ init_i8259a_irqs(void) | ||||
| 
 | ||||
| 	for (i = 0; i < 16; i++) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED; | ||||
| 		irq_desc[i].handler = &i8259a_irq_type; | ||||
| 		irq_desc[i].chip = &i8259a_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	setup_irq(2, &cascade); | ||||
|  | ||||
| @ -120,7 +120,7 @@ init_pyxis_irqs(unsigned long ignore_mask) | ||||
| 		if ((ignore_mask >> i) & 1) | ||||
| 			continue; | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &pyxis_irq_type; | ||||
| 		irq_desc[i].chip = &pyxis_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	setup_irq(16+7, &isa_cascade_irqaction); | ||||
|  | ||||
| @ -67,7 +67,7 @@ init_srm_irqs(long max, unsigned long ignore_mask) | ||||
| 		if (i < 64 && ((ignore_mask >> i) & 1)) | ||||
| 			continue; | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &srm_irq_type; | ||||
| 		irq_desc[i].chip = &srm_irq_type; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -6,7 +6,6 @@ | ||||
|  * This file has goodies to help simplify instantiation of machine vectors. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <asm/pgalloc.h> | ||||
| 
 | ||||
| /* Whee.  These systems don't have an HAE:
 | ||||
|  | ||||
| @ -12,7 +12,6 @@ | ||||
|  * Nov 2000, Ivan Kokshaysky <ink@jurassic.park.msu.ru> | ||||
|  *	     PCI-PCI bridges cleanup | ||||
|  */ | ||||
| #include <linux/config.h> | ||||
| #include <linux/string.h> | ||||
| #include <linux/pci.h> | ||||
| #include <linux/init.h> | ||||
| @ -124,12 +123,12 @@ DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_final); | ||||
| 
 | ||||
| void | ||||
| pcibios_align_resource(void *data, struct resource *res, | ||||
| 		       unsigned long size, unsigned long align) | ||||
| 		       resource_size_t size, resource_size_t align) | ||||
| { | ||||
| 	struct pci_dev *dev = data; | ||||
| 	struct pci_controller *hose = dev->sysdata; | ||||
| 	unsigned long alignto; | ||||
| 	unsigned long start = res->start; | ||||
| 	resource_size_t start = res->start; | ||||
| 
 | ||||
| 	if (res->flags & IORESOURCE_IO) { | ||||
| 		/* Make sure we start at our min on all hoses */ | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * This file handles the architecture-dependent parts of process handling. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/errno.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/sched.h> | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| #include <linux/config.h> | ||||
| #include <linux/interrupt.h> | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
|  * SMC 37C93X initialization code | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| 
 | ||||
| #include <linux/slab.h> | ||||
|  | ||||
| @ -57,7 +57,6 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/config.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/proc_fs.h> | ||||
|  | ||||
| @ -5,7 +5,6 @@ | ||||
|  * (TTY driver and console driver) | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/console.h> | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * Code supporting the ALCOR and XLT (XL-300/366/433). | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -144,7 +143,7 @@ alcor_init_irq(void) | ||||
| 		if (i >= 16+20 && i <= 16+30) | ||||
| 			continue; | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &alcor_irq_type; | ||||
| 		irq_desc[i].chip = &alcor_irq_type; | ||||
| 	} | ||||
| 	i8259a_irq_type.ack = alcor_isa_mask_and_ack_irq; | ||||
| 
 | ||||
|  | ||||
| @ -9,7 +9,6 @@ | ||||
|  * PC164 and LX164. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -124,7 +123,7 @@ common_init_irq(void (*srm_dev_int)(unsigned long v, struct pt_regs *r)) | ||||
| 
 | ||||
| 		for (i = 16; i < 35; ++i) { | ||||
| 			irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 			irq_desc[i].handler = &cabriolet_irq_type; | ||||
| 			irq_desc[i].chip = &cabriolet_irq_type; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
| @ -12,7 +12,6 @@ | ||||
|  * Code supporting the DP264 (EV6+TSUNAMI). | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -300,7 +299,7 @@ init_tsunami_irqs(struct hw_interrupt_type * ops, int imin, int imax) | ||||
| 	long i; | ||||
| 	for (i = imin; i <= imax; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = ops; | ||||
| 		irq_desc[i].chip = ops; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * Code supporting the EB64+ and EB66. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -137,7 +136,7 @@ eb64p_init_irq(void) | ||||
| 
 | ||||
| 	for (i = 16; i < 32; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &eb64p_irq_type; | ||||
| 		irq_desc[i].chip = &eb64p_irq_type; | ||||
| 	}		 | ||||
| 
 | ||||
| 	common_init_isa_dma(); | ||||
|  | ||||
| @ -154,7 +154,7 @@ eiger_init_irq(void) | ||||
| 
 | ||||
| 	for (i = 16; i < 128; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &eiger_irq_type; | ||||
| 		irq_desc[i].chip = &eiger_irq_type; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -74,7 +74,7 @@ jensen_local_startup(unsigned int irq) | ||||
| 		 * the IPL from being dropped during handler processing. | ||||
| 		 */ | ||||
| 		if (irq_desc[irq].action) | ||||
| 			irq_desc[irq].action->flags |= SA_INTERRUPT; | ||||
| 			irq_desc[irq].action->flags |= IRQF_DISABLED; | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| @ -206,11 +206,11 @@ jensen_init_irq(void) | ||||
| { | ||||
| 	init_i8259a_irqs(); | ||||
| 
 | ||||
| 	irq_desc[1].handler = &jensen_local_irq_type; | ||||
| 	irq_desc[4].handler = &jensen_local_irq_type; | ||||
| 	irq_desc[3].handler = &jensen_local_irq_type; | ||||
| 	irq_desc[7].handler = &jensen_local_irq_type; | ||||
| 	irq_desc[9].handler = &jensen_local_irq_type; | ||||
| 	irq_desc[1].chip = &jensen_local_irq_type; | ||||
| 	irq_desc[4].chip = &jensen_local_irq_type; | ||||
| 	irq_desc[3].chip = &jensen_local_irq_type; | ||||
| 	irq_desc[7].chip = &jensen_local_irq_type; | ||||
| 	irq_desc[9].chip = &jensen_local_irq_type; | ||||
| 
 | ||||
| 	common_init_isa_dma(); | ||||
| } | ||||
|  | ||||
| @ -303,7 +303,7 @@ init_io7_irqs(struct io7 *io7, | ||||
| 	/* Set up the lsi irqs.  */ | ||||
| 	for (i = 0; i < 128; ++i) { | ||||
| 		irq_desc[base + i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[base + i].handler = lsi_ops; | ||||
| 		irq_desc[base + i].chip = lsi_ops; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Disable the implemented irqs in hardware.  */ | ||||
| @ -317,7 +317,7 @@ init_io7_irqs(struct io7 *io7, | ||||
| 	/* Set up the msi irqs.  */ | ||||
| 	for (i = 128; i < (128 + 512); ++i) { | ||||
| 		irq_desc[base + i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[base + i].handler = msi_ops; | ||||
| 		irq_desc[base + i].chip = msi_ops; | ||||
| 	} | ||||
| 
 | ||||
| 	for (i = 0; i < 16; ++i) | ||||
| @ -335,7 +335,7 @@ marvel_init_irq(void) | ||||
| 	/* Reserve the legacy irqs.  */ | ||||
| 	for (i = 0; i < 16; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED; | ||||
| 		irq_desc[i].handler = &marvel_legacy_irq_type; | ||||
| 		irq_desc[i].chip = &marvel_legacy_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Init the io7 irqs.  */ | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * Code supporting the MIKASA (AlphaServer 1000). | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -117,7 +116,7 @@ mikasa_init_irq(void) | ||||
| 
 | ||||
| 	for (i = 16; i < 32; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &mikasa_irq_type; | ||||
| 		irq_desc[i].chip = &mikasa_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	init_i8259a_irqs(); | ||||
|  | ||||
| @ -9,7 +9,6 @@ | ||||
|  * CORELLE (AlphaServer 800), and ALCOR Primo (AlphaStation 600A). | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -139,7 +138,7 @@ noritake_init_irq(void) | ||||
| 
 | ||||
| 	for (i = 16; i < 48; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &noritake_irq_type; | ||||
| 		irq_desc[i].chip = &noritake_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	init_i8259a_irqs(); | ||||
|  | ||||
| @ -180,7 +180,7 @@ rawhide_init_irq(void) | ||||
| 
 | ||||
| 	for (i = 16; i < 128; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &rawhide_irq_type; | ||||
| 		irq_desc[i].chip = &rawhide_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	init_i8259a_irqs(); | ||||
|  | ||||
| @ -117,7 +117,7 @@ rx164_init_irq(void) | ||||
| 	rx164_update_irq_hw(0); | ||||
| 	for (i = 16; i < 40; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &rx164_irq_type; | ||||
| 		irq_desc[i].chip = &rx164_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	init_i8259a_irqs(); | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * Code supporting the Sable, Sable-Gamma, and Lynx systems. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -537,7 +536,7 @@ sable_lynx_init_irq(int nr_irqs) | ||||
| 
 | ||||
| 	for (i = 0; i < nr_irqs; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &sable_lynx_irq_type; | ||||
| 		irq_desc[i].chip = &sable_lynx_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	common_init_isa_dma(); | ||||
|  | ||||
| @ -10,7 +10,6 @@ | ||||
|  * Kenetics's Platform 2000, Avanti (AlphaStation), XL, and AlphaBook1. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
|  | ||||
| @ -154,7 +154,7 @@ takara_init_irq(void) | ||||
| 
 | ||||
| 	for (i = 16; i < 128; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = &takara_irq_type; | ||||
| 		irq_desc[i].chip = &takara_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	common_init_isa_dma(); | ||||
|  | ||||
| @ -12,7 +12,6 @@ | ||||
|  *	Granite | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/mm.h> | ||||
| @ -189,7 +188,7 @@ init_titan_irqs(struct hw_interrupt_type * ops, int imin, int imax) | ||||
| 	long i; | ||||
| 	for (i = imin; i <= imax; ++i) { | ||||
| 		irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i].handler = ops; | ||||
| 		irq_desc[i].chip = ops; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| @ -280,15 +279,15 @@ titan_late_init(void) | ||||
| 	 * all reported to the kernel as machine checks, so the handler | ||||
| 	 * is a nop so it can be called to count the individual events. | ||||
| 	 */ | ||||
| 	request_irq(63+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(63+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "CChip Error", NULL); | ||||
| 	request_irq(62+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(62+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "PChip 0 H_Error", NULL); | ||||
| 	request_irq(61+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(61+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "PChip 1 H_Error", NULL); | ||||
| 	request_irq(60+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(60+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "PChip 0 C_Error", NULL); | ||||
| 	request_irq(59+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(59+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "PChip 1 C_Error", NULL); | ||||
| 
 | ||||
| 	/* 
 | ||||
| @ -349,9 +348,9 @@ privateer_init_pci(void) | ||||
| 	 * Hook a couple of extra err interrupts that the | ||||
| 	 * common titan code won't. | ||||
| 	 */ | ||||
| 	request_irq(53+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(53+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "NMI", NULL); | ||||
| 	request_irq(50+16, titan_intr_nop, SA_INTERRUPT,  | ||||
| 	request_irq(50+16, titan_intr_nop, IRQF_DISABLED, | ||||
| 		    "Temperature Warning", NULL); | ||||
| 
 | ||||
| 	/*
 | ||||
|  | ||||
| @ -199,14 +199,14 @@ wildfire_init_irq_per_pca(int qbbno, int pcano) | ||||
| 		if (i == 2) | ||||
| 			continue; | ||||
| 		irq_desc[i+irq_bias].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i+irq_bias].handler = &wildfire_irq_type; | ||||
| 		irq_desc[i+irq_bias].chip = &wildfire_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	irq_desc[36+irq_bias].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 	irq_desc[36+irq_bias].handler = &wildfire_irq_type; | ||||
| 	irq_desc[36+irq_bias].chip = &wildfire_irq_type; | ||||
| 	for (i = 40; i < 64; ++i) { | ||||
| 		irq_desc[i+irq_bias].status = IRQ_DISABLED | IRQ_LEVEL; | ||||
| 		irq_desc[i+irq_bias].handler = &wildfire_irq_type; | ||||
| 		irq_desc[i+irq_bias].chip = &wildfire_irq_type; | ||||
| 	} | ||||
| 
 | ||||
| 	setup_irq(32+irq_bias, &isa_enable);	 | ||||
|  | ||||
| @ -27,7 +27,6 @@ | ||||
|  * 2003-06-03	R. Scott Bailey <scott.bailey@eds.com> | ||||
|  *	Tighten sanity in time_init from 1% (10,000 PPM) to 250 PPM | ||||
|  */ | ||||
| #include <linux/config.h> | ||||
| #include <linux/errno.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/sched.h> | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * This file initializes the trap entry points | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/mm.h> | ||||
| #include <linux/sched.h> | ||||
| #include <linux/tty.h> | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| #include <linux/config.h> | ||||
| #include <asm-generic/vmlinux.lds.h> | ||||
| 
 | ||||
| OUTPUT_FORMAT("elf64-alpha") | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
|  *	arch/alpha/lib/callback_srm.S | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <asm/console.h> | ||||
| 
 | ||||
| .text | ||||
|  | ||||
| @ -4,7 +4,6 @@ | ||||
|  * Delay routines, using a pre-computed "loops_per_jiffy" value. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/sched.h> /* for udelay's use of smp_processor_id */ | ||||
| #include <asm/param.h> | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
|  * linux/arch/alpha/mm/extable.c | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/module.h> | ||||
| #include <asm/uaccess.h> | ||||
| 
 | ||||
|  | ||||
| @ -4,7 +4,6 @@ | ||||
|  *  Copyright (C) 1995  Linus Torvalds | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/sched.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/mm.h> | ||||
|  | ||||
| @ -6,7 +6,6 @@ | ||||
| 
 | ||||
| /* 2.3.x zone allocator, 1999 Andrea Arcangeli <andrea@suse.de> */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/pagemap.h> | ||||
| #include <linux/signal.h> | ||||
| #include <linux/sched.h> | ||||
|  | ||||
| @ -6,7 +6,6 @@ | ||||
|  *  Copyright (C) 2001 Andrea Arcangeli <andrea@suse.de> SuSE | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/mm.h> | ||||
|  | ||||
| @ -47,6 +47,18 @@ config MCA | ||||
| 	  <file:Documentation/mca.txt> (and especially the web page given | ||||
| 	  there) before attempting to build an MCA bus kernel. | ||||
| 
 | ||||
| config GENERIC_HARDIRQS | ||||
| 	bool | ||||
| 	default y | ||||
| 
 | ||||
| config HARDIRQS_SW_RESEND | ||||
| 	bool | ||||
| 	default y | ||||
| 
 | ||||
| config GENERIC_IRQ_PROBE | ||||
| 	bool | ||||
| 	default y | ||||
| 
 | ||||
| config RWSEM_GENERIC_SPINLOCK | ||||
| 	bool | ||||
| 	default y | ||||
| @ -121,11 +133,11 @@ config ARCH_VERSATILE | ||||
| 	help | ||||
| 	  This enables support for ARM Ltd Versatile board. | ||||
| 
 | ||||
| config ARCH_AT91RM9200 | ||||
| 	bool "Atmel AT91RM9200" | ||||
| config ARCH_AT91 | ||||
| 	bool "Atmel AT91" | ||||
| 	help | ||||
| 	  Say Y here if you intend to run this kernel on an Atmel | ||||
| 	  AT91RM9200-based board. | ||||
| 	  This enables support for systems based on the Atmel AT91RM9200 | ||||
| 	  and AT91SAM9xxx processors. | ||||
| 
 | ||||
| config ARCH_CLPS7500 | ||||
| 	bool "Cirrus CL-PS7500FE" | ||||
| @ -547,7 +559,7 @@ config LEDS | ||||
| 		   ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ | ||||
| 		   ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ | ||||
| 		   ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \ | ||||
| 		   ARCH_AT91RM9200 | ||||
| 		   ARCH_AT91RM9200 || MACH_TRIZEPS4 | ||||
| 	help | ||||
| 	  If you say Y here, the LEDs on your machine will be used | ||||
| 	  to provide useful information about your current system status. | ||||
| @ -678,7 +690,7 @@ config XIP_PHYS_ADDR | ||||
| 
 | ||||
| endmenu | ||||
| 
 | ||||
| if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP1) | ||||
| if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP) | ||||
| 
 | ||||
| menu "CPU Frequency scaling" | ||||
| 
 | ||||
|  | ||||
| @ -114,7 +114,7 @@ endif | ||||
|  machine-$(CONFIG_ARCH_H720X)	   := h720x | ||||
|  machine-$(CONFIG_ARCH_AAEC2000)   := aaec2000 | ||||
|  machine-$(CONFIG_ARCH_REALVIEW)   := realview | ||||
|  machine-$(CONFIG_ARCH_AT91RM9200) := at91rm9200 | ||||
|  machine-$(CONFIG_ARCH_AT91)       := at91rm9200 | ||||
|  machine-$(CONFIG_ARCH_EP93XX)     := ep93xx | ||||
|  machine-$(CONFIG_ARCH_PNX4008)    := pnx4008 | ||||
|  machine-$(CONFIG_ARCH_NETX)       := netx | ||||
|  | ||||
| @ -4,7 +4,6 @@ | ||||
|  * Copyright (C) 1999, 2000, 2001 Nexus Electronics Ltd | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| 
 | ||||
| 		/* There are three different ways the kernel can be | ||||
| 		   booted on a 7500 system: from Angel (loaded in RAM), from | ||||
|  | ||||
| @ -7,7 +7,6 @@ | ||||
|  * is merged with head.S by the linker. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <asm/mach-types.h> | ||||
| 
 | ||||
| #ifndef CONFIG_ARCH_L7200 | ||||
|  | ||||
| @ -7,7 +7,6 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/linkage.h> | ||||
| #include <asm/mach-types.h> | ||||
| 
 | ||||
|  | ||||
| @ -12,7 +12,6 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/linkage.h> | ||||
| #include <asm/mach-types.h> | ||||
| 
 | ||||
|  | ||||
| @ -5,7 +5,6 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/linkage.h> | ||||
| #include <asm/mach-types.h> | ||||
| 
 | ||||
|  | ||||
| @ -8,7 +8,6 @@ | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
|  */ | ||||
| #include <linux/config.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| /* | ||||
| @ -448,8 +447,11 @@ __common_mmu_cache_on: | ||||
| 		mov	r1, #-1 | ||||
| 		mcr	p15, 0, r3, c2, c0, 0	@ load page table pointer
 | ||||
| 		mcr	p15, 0, r1, c3, c0, 0	@ load domain access control
 | ||||
| 		mcr	p15, 0, r0, c1, c0, 0	@ load control register
 | ||||
| 		mov	pc, lr | ||||
| 		b	1f | ||||
| 		.align	5			@ cache line aligned
 | ||||
| 1:		mcr	p15, 0, r0, c1, c0, 0	@ load control register
 | ||||
| 		mrc	p15, 0, r0, c1, c0, 0	@ and read it back to
 | ||||
| 		sub	pc, lr, r0, lsr #32	@ properly flush pipeline
 | ||||
| 
 | ||||
| /* | ||||
|  * All code following this line is relocatable.  It is relocated by | ||||
|  | ||||
| @ -33,6 +33,7 @@ | ||||
| 
 | ||||
| static void __iomem *gic_dist_base; | ||||
| static void __iomem *gic_cpu_base; | ||||
| static DEFINE_SPINLOCK(irq_controller_lock); | ||||
| 
 | ||||
| /*
 | ||||
|  * Routines to acknowledge, disable and enable interrupts | ||||
| @ -52,32 +53,45 @@ static void __iomem *gic_cpu_base; | ||||
| static void gic_ack_irq(unsigned int irq) | ||||
| { | ||||
| 	u32 mask = 1 << (irq % 32); | ||||
| 
 | ||||
| 	spin_lock(&irq_controller_lock); | ||||
| 	writel(mask, gic_dist_base + GIC_DIST_ENABLE_CLEAR + (irq / 32) * 4); | ||||
| 	writel(irq, gic_cpu_base + GIC_CPU_EOI); | ||||
| 	spin_unlock(&irq_controller_lock); | ||||
| } | ||||
| 
 | ||||
| static void gic_mask_irq(unsigned int irq) | ||||
| { | ||||
| 	u32 mask = 1 << (irq % 32); | ||||
| 
 | ||||
| 	spin_lock(&irq_controller_lock); | ||||
| 	writel(mask, gic_dist_base + GIC_DIST_ENABLE_CLEAR + (irq / 32) * 4); | ||||
| 	spin_unlock(&irq_controller_lock); | ||||
| } | ||||
| 
 | ||||
| static void gic_unmask_irq(unsigned int irq) | ||||
| { | ||||
| 	u32 mask = 1 << (irq % 32); | ||||
| 
 | ||||
| 	spin_lock(&irq_controller_lock); | ||||
| 	writel(mask, gic_dist_base + GIC_DIST_ENABLE_SET + (irq / 32) * 4); | ||||
| 	spin_unlock(&irq_controller_lock); | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_SMP | ||||
| static void gic_set_cpu(struct irqdesc *desc, unsigned int irq, unsigned int cpu) | ||||
| static void gic_set_cpu(unsigned int irq, cpumask_t mask_val) | ||||
| { | ||||
| 	void __iomem *reg = gic_dist_base + GIC_DIST_TARGET + (irq & ~3); | ||||
| 	unsigned int shift = (irq % 4) * 8; | ||||
| 	unsigned int cpu = first_cpu(mask_val); | ||||
| 	u32 val; | ||||
| 
 | ||||
| 	spin_lock(&irq_controller_lock); | ||||
| 	irq_desc[irq].cpu = cpu; | ||||
| 	val = readl(reg) & ~(0xff << shift); | ||||
| 	val |= 1 << (cpu + shift); | ||||
| 	writel(val, reg); | ||||
| 	spin_unlock(&irq_controller_lock); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| @ -86,7 +100,7 @@ static struct irqchip gic_chip = { | ||||
| 	.mask		= gic_mask_irq, | ||||
| 	.unmask		= gic_unmask_irq, | ||||
| #ifdef CONFIG_SMP | ||||
| 	.set_cpu	= gic_set_cpu, | ||||
| 	.set_affinity	= gic_set_cpu, | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -15,7 +15,6 @@ | ||||
|  * Based on sa1111.c | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/kernel.h> | ||||
|  | ||||
| @ -14,7 +14,6 @@ | ||||
|  * All initialization functions provided here are intended to be called | ||||
|  * from machine specific code with proper arguments when required. | ||||
|  */ | ||||
| #include <linux/config.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/kernel.h> | ||||
| @ -151,7 +150,7 @@ static void | ||||
| sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | ||||
| { | ||||
| 	unsigned int stat0, stat1, i; | ||||
| 	void __iomem *base = desc->data; | ||||
| 	void __iomem *base = get_irq_data(irq); | ||||
| 
 | ||||
| 	stat0 = sa1111_readl(base + SA1111_INTSTATCLR0); | ||||
| 	stat1 = sa1111_readl(base + SA1111_INTSTATCLR1); | ||||
| @ -169,11 +168,11 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | ||||
| 
 | ||||
| 	for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1) | ||||
| 		if (stat0 & 1) | ||||
| 			do_edge_IRQ(i, irq_desc + i, regs); | ||||
| 			handle_edge_irq(i, irq_desc + i, regs); | ||||
| 
 | ||||
| 	for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1) | ||||
| 		if (stat1 & 1) | ||||
| 			do_edge_IRQ(i, irq_desc + i, regs); | ||||
| 			handle_edge_irq(i, irq_desc + i, regs); | ||||
| 
 | ||||
| 	/* For level-based interrupts */ | ||||
| 	desc->chip->unmask(irq); | ||||
|  | ||||
| @ -16,6 +16,7 @@ | ||||
| #include <linux/timex.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/interrupt.h> | ||||
| #include <linux/irq.h> | ||||
| 
 | ||||
| #include <asm/hardware.h> | ||||
| #include <asm/io.h> | ||||
| @ -76,7 +77,7 @@ ioc_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | ||||
| 
 | ||||
| static struct irqaction ioc_timer_irq = { | ||||
| 	.name		= "timer", | ||||
| 	.flags		= SA_INTERRUPT, | ||||
| 	.flags		= IRQF_DISABLED, | ||||
| 	.handler	= ioc_timer_interrupt | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -11,7 +11,6 @@ | ||||
|  * License, or (at your option) any later version. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/slab.h> | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| #include <linux/config.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/pci.h> | ||||
| #include <linux/ptrace.h> | ||||
|  | ||||
| @ -103,6 +103,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -103,6 +103,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -105,6 +105,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -82,6 +82,7 @@ CONFIG_OBSOLETE_MODPARM=y | ||||
| # CONFIG_ARCH_VERSATILE is not set | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -103,6 +103,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -103,6 +103,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -105,6 +105,7 @@ CONFIG_DEFAULT_IOSCHED="deadline" | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -80,6 +80,7 @@ CONFIG_KMOD=y | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91RM9200=y | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -1,19 +1,20 @@ | ||||
| # | ||||
| # Automatically generated make config: don't edit | ||||
| # Linux kernel version: 2.6.14 | ||||
| # Wed Nov  9 18:53:40 2005 | ||||
| # Linux kernel version: 2.6.17 | ||||
| # Thu Jun 29 15:25:18 2006 | ||||
| # | ||||
| CONFIG_ARM=y | ||||
| CONFIG_MMU=y | ||||
| CONFIG_UID16=y | ||||
| CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||||
| CONFIG_GENERIC_HWEIGHT=y | ||||
| CONFIG_GENERIC_CALIBRATE_DELAY=y | ||||
| CONFIG_VECTORS_BASE=0xffff0000 | ||||
| CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||||
| 
 | ||||
| # | ||||
| # Code maturity level options | ||||
| # | ||||
| CONFIG_EXPERIMENTAL=y | ||||
| CONFIG_CLEAN_COMPILE=y | ||||
| CONFIG_BROKEN_ON_SMP=y | ||||
| CONFIG_LOCK_KERNEL=y | ||||
| CONFIG_INIT_ENV_ARG_LIMIT=32 | ||||
| @ -29,26 +30,26 @@ CONFIG_SYSVIPC=y | ||||
| # CONFIG_BSD_PROCESS_ACCT is not set | ||||
| CONFIG_SYSCTL=y | ||||
| # CONFIG_AUDIT is not set | ||||
| # CONFIG_HOTPLUG is not set | ||||
| CONFIG_KOBJECT_UEVENT=y | ||||
| # CONFIG_IKCONFIG is not set | ||||
| # CONFIG_RELAY is not set | ||||
| CONFIG_INITRAMFS_SOURCE="" | ||||
| CONFIG_UID16=y | ||||
| CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||||
| # CONFIG_EMBEDDED is not set | ||||
| CONFIG_KALLSYMS=y | ||||
| # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||||
| CONFIG_HOTPLUG=y | ||||
| CONFIG_PRINTK=y | ||||
| CONFIG_BUG=y | ||||
| CONFIG_ELF_CORE=y | ||||
| CONFIG_BASE_FULL=y | ||||
| CONFIG_FUTEX=y | ||||
| CONFIG_EPOLL=y | ||||
| CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||||
| CONFIG_SHMEM=y | ||||
| CONFIG_CC_ALIGN_FUNCTIONS=0 | ||||
| CONFIG_CC_ALIGN_LABELS=0 | ||||
| CONFIG_CC_ALIGN_LOOPS=0 | ||||
| CONFIG_CC_ALIGN_JUMPS=0 | ||||
| CONFIG_SLAB=y | ||||
| # CONFIG_TINY_SHMEM is not set | ||||
| CONFIG_BASE_SMALL=0 | ||||
| # CONFIG_SLOB is not set | ||||
| 
 | ||||
| # | ||||
| # Loadable module support | ||||
| @ -56,7 +57,6 @@ CONFIG_BASE_SMALL=0 | ||||
| CONFIG_MODULES=y | ||||
| CONFIG_MODULE_UNLOAD=y | ||||
| # CONFIG_MODULE_FORCE_UNLOAD is not set | ||||
| CONFIG_OBSOLETE_MODPARM=y | ||||
| # CONFIG_MODVERSIONS is not set | ||||
| # CONFIG_MODULE_SRCVERSION_ALL is not set | ||||
| # CONFIG_KMOD is not set | ||||
| @ -64,6 +64,7 @@ CONFIG_OBSOLETE_MODPARM=y | ||||
| # | ||||
| # Block layer | ||||
| # | ||||
| # CONFIG_BLK_DEV_IO_TRACE is not set | ||||
| 
 | ||||
| # | ||||
| # IO Schedulers | ||||
| @ -81,16 +82,26 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # | ||||
| # System Type | ||||
| # | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| # CONFIG_ARCH_INTEGRATOR is not set | ||||
| # CONFIG_ARCH_REALVIEW is not set | ||||
| # CONFIG_ARCH_VERSATILE is not set | ||||
| # CONFIG_ARCH_AT91RM9200 is not set | ||||
| # CONFIG_ARCH_CLPS7500 is not set | ||||
| # CONFIG_ARCH_CLPS711X is not set | ||||
| # CONFIG_ARCH_CO285 is not set | ||||
| # CONFIG_ARCH_EBSA110 is not set | ||||
| # CONFIG_ARCH_EP93XX is not set | ||||
| # CONFIG_ARCH_FOOTBRIDGE is not set | ||||
| # CONFIG_ARCH_INTEGRATOR is not set | ||||
| # CONFIG_ARCH_NETX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_IOP3XX is not set | ||||
| # CONFIG_ARCH_IXP4XX is not set | ||||
| # CONFIG_ARCH_IXP2000 is not set | ||||
| # CONFIG_ARCH_IXP23XX is not set | ||||
| # CONFIG_ARCH_L7200 is not set | ||||
| # CONFIG_ARCH_PNX4008 is not set | ||||
| # CONFIG_ARCH_PXA is not set | ||||
| # CONFIG_ARCH_RPC is not set | ||||
| # CONFIG_ARCH_SA1100 is not set | ||||
| @ -98,11 +109,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | ||||
| # CONFIG_ARCH_SHARK is not set | ||||
| # CONFIG_ARCH_LH7A40X is not set | ||||
| CONFIG_ARCH_OMAP=y | ||||
| # CONFIG_ARCH_VERSATILE is not set | ||||
| # CONFIG_ARCH_REALVIEW is not set | ||||
| # CONFIG_ARCH_IMX is not set | ||||
| # CONFIG_ARCH_H720X is not set | ||||
| # CONFIG_ARCH_AAEC2000 is not set | ||||
| 
 | ||||
| # | ||||
| # TI OMAP Implementations | ||||
| @ -141,6 +147,7 @@ CONFIG_ARCH_OMAP16XX=y | ||||
| CONFIG_MACH_OMAP_H2=y | ||||
| # CONFIG_MACH_OMAP_H3 is not set | ||||
| # CONFIG_MACH_OMAP_OSK is not set | ||||
| # CONFIG_MACH_NOKIA770 is not set | ||||
| # CONFIG_MACH_OMAP_GENERIC is not set | ||||
| 
 | ||||
| # | ||||
| @ -177,7 +184,6 @@ CONFIG_ARM_THUMB=y | ||||
| # | ||||
| # Bus support | ||||
| # | ||||
| CONFIG_ISA_DMA_API=y | ||||
| 
 | ||||
| # | ||||
| # PCCARD (PCMCIA/CardBus) support | ||||
| @ -189,6 +195,8 @@ CONFIG_ISA_DMA_API=y | ||||
| # | ||||
| CONFIG_PREEMPT=y | ||||
| CONFIG_NO_IDLE_HZ=y | ||||
| CONFIG_HZ=128 | ||||
| # CONFIG_AEABI is not set | ||||
| # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||||
| CONFIG_SELECT_MEMORY_MODEL=y | ||||
| CONFIG_FLATMEM_MANUAL=y | ||||
| @ -249,6 +257,8 @@ CONFIG_BINFMT_AOUT=y | ||||
| # Power management options | ||||
| # | ||||
| CONFIG_PM=y | ||||
| CONFIG_PM_LEGACY=y | ||||
| # CONFIG_PM_DEBUG is not set | ||||
| # CONFIG_APM is not set | ||||
| 
 | ||||
| # | ||||
| @ -259,9 +269,12 @@ CONFIG_NET=y | ||||
| # | ||||
| # Networking options | ||||
| # | ||||
| # CONFIG_NETDEBUG is not set | ||||
| CONFIG_PACKET=y | ||||
| # CONFIG_PACKET_MMAP is not set | ||||
| CONFIG_UNIX=y | ||||
| CONFIG_XFRM=y | ||||
| # CONFIG_XFRM_USER is not set | ||||
| # CONFIG_NET_KEY is not set | ||||
| CONFIG_INET=y | ||||
| # CONFIG_IP_MULTICAST is not set | ||||
| @ -278,12 +291,18 @@ CONFIG_IP_PNP_BOOTP=y | ||||
| # CONFIG_INET_AH is not set | ||||
| # CONFIG_INET_ESP is not set | ||||
| # CONFIG_INET_IPCOMP is not set | ||||
| # CONFIG_INET_XFRM_TUNNEL is not set | ||||
| # CONFIG_INET_TUNNEL is not set | ||||
| CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||||
| CONFIG_INET_XFRM_MODE_TUNNEL=y | ||||
| CONFIG_INET_DIAG=y | ||||
| CONFIG_INET_TCP_DIAG=y | ||||
| # CONFIG_TCP_CONG_ADVANCED is not set | ||||
| CONFIG_TCP_CONG_BIC=y | ||||
| # CONFIG_IPV6 is not set | ||||
| # CONFIG_INET6_XFRM_TUNNEL is not set | ||||
| # CONFIG_INET6_TUNNEL is not set | ||||
| # CONFIG_NETWORK_SECMARK is not set | ||||
| # CONFIG_NETFILTER is not set | ||||
| 
 | ||||
| # | ||||
| @ -295,6 +314,11 @@ CONFIG_TCP_CONG_BIC=y | ||||
| # SCTP Configuration (EXPERIMENTAL) | ||||
| # | ||||
| # CONFIG_IP_SCTP is not set | ||||
| 
 | ||||
| # | ||||
| # TIPC Configuration (EXPERIMENTAL) | ||||
| # | ||||
| # CONFIG_TIPC is not set | ||||
| # CONFIG_ATM is not set | ||||
| # CONFIG_BRIDGE is not set | ||||
| # CONFIG_VLAN_8021Q is not set | ||||
| @ -312,7 +336,6 @@ CONFIG_TCP_CONG_BIC=y | ||||
| # QoS and/or fair queueing | ||||
| # | ||||
| # CONFIG_NET_SCHED is not set | ||||
| # CONFIG_NET_CLS_ROUTE is not set | ||||
| 
 | ||||
| # | ||||
| # Network testing | ||||
| @ -333,6 +356,12 @@ CONFIG_TCP_CONG_BIC=y | ||||
| CONFIG_STANDALONE=y | ||||
| CONFIG_PREVENT_FIRMWARE_BUILD=y | ||||
| # CONFIG_FW_LOADER is not set | ||||
| # CONFIG_SYS_HYPERVISOR is not set | ||||
| 
 | ||||
| # | ||||
| # Connector - unified userspace <-> kernelspace linker | ||||
| # | ||||
| # CONFIG_CONNECTOR is not set | ||||
| 
 | ||||
| # | ||||
| # Memory Technology Devices (MTD) | ||||
| @ -526,6 +555,7 @@ CONFIG_SERIO_SERPORT=y | ||||
| CONFIG_VT=y | ||||
| CONFIG_VT_CONSOLE=y | ||||
| CONFIG_HW_CONSOLE=y | ||||
| # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||||
| # CONFIG_SERIAL_NONSTANDARD is not set | ||||
| 
 | ||||
| # | ||||
| @ -534,6 +564,7 @@ CONFIG_HW_CONSOLE=y | ||||
| CONFIG_SERIAL_8250=y | ||||
| CONFIG_SERIAL_8250_CONSOLE=y | ||||
| CONFIG_SERIAL_8250_NR_UARTS=4 | ||||
| CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||||
| # CONFIG_SERIAL_8250_EXTENDED is not set | ||||
| 
 | ||||
| # | ||||
| @ -559,8 +590,8 @@ CONFIG_WATCHDOG_NOWAYOUT=y | ||||
| # Watchdog Device Drivers | ||||
| # | ||||
| # CONFIG_SOFT_WATCHDOG is not set | ||||
| # CONFIG_HW_RANDOM is not set | ||||
| # CONFIG_NVRAM is not set | ||||
| # CONFIG_RTC is not set | ||||
| # CONFIG_DTLK is not set | ||||
| # CONFIG_R3964 is not set | ||||
| 
 | ||||
| @ -572,6 +603,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y | ||||
| # | ||||
| # TPM devices | ||||
| # | ||||
| # CONFIG_TCG_TPM is not set | ||||
| # CONFIG_TELCLOCK is not set | ||||
| 
 | ||||
| # | ||||
| @ -579,11 +611,23 @@ CONFIG_WATCHDOG_NOWAYOUT=y | ||||
| # | ||||
| # CONFIG_I2C is not set | ||||
| 
 | ||||
| # | ||||
| # SPI support | ||||
| # | ||||
| # CONFIG_SPI is not set | ||||
| # CONFIG_SPI_MASTER is not set | ||||
| 
 | ||||
| # | ||||
| # Dallas's 1-wire bus | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Hardware Monitoring support | ||||
| # | ||||
| CONFIG_HWMON=y | ||||
| # CONFIG_HWMON_VID is not set | ||||
| # CONFIG_SENSORS_ABITUGURU is not set | ||||
| # CONFIG_SENSORS_F71805F is not set | ||||
| # CONFIG_HWMON_DEBUG_CHIP is not set | ||||
| 
 | ||||
| # | ||||
| @ -591,13 +635,23 @@ CONFIG_HWMON=y | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Multimedia Capabilities Port drivers | ||||
| # LED devices | ||||
| # | ||||
| # CONFIG_NEW_LEDS is not set | ||||
| 
 | ||||
| # | ||||
| # LED drivers | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # LED Triggers | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Multimedia devices | ||||
| # | ||||
| # CONFIG_VIDEO_DEV is not set | ||||
| CONFIG_VIDEO_V4L2=y | ||||
| 
 | ||||
| # | ||||
| # Digital Video Broadcasting Devices | ||||
| @ -607,11 +661,13 @@ CONFIG_HWMON=y | ||||
| # | ||||
| # Graphics support | ||||
| # | ||||
| CONFIG_FIRMWARE_EDID=y | ||||
| CONFIG_FB=y | ||||
| # CONFIG_FB_CFB_FILLRECT is not set | ||||
| # CONFIG_FB_CFB_COPYAREA is not set | ||||
| # CONFIG_FB_CFB_IMAGEBLIT is not set | ||||
| # CONFIG_FB_MACMODES is not set | ||||
| # CONFIG_FB_BACKLIGHT is not set | ||||
| CONFIG_FB_MODE_HELPERS=y | ||||
| # CONFIG_FB_TILEBLITTING is not set | ||||
| # CONFIG_FB_S1D13XXX is not set | ||||
| @ -635,7 +691,6 @@ CONFIG_FONT_8x16=y | ||||
| # CONFIG_FONT_SUN8x16 is not set | ||||
| # CONFIG_FONT_SUN12x22 is not set | ||||
| # CONFIG_FONT_10x18 is not set | ||||
| # CONFIG_FONT_RL is not set | ||||
| 
 | ||||
| # | ||||
| # Logo configuration | ||||
| @ -660,16 +715,15 @@ CONFIG_SOUND=y | ||||
| # Open Sound System | ||||
| # | ||||
| CONFIG_SOUND_PRIME=y | ||||
| # CONFIG_OBSOLETE_OSS_DRIVER is not set | ||||
| # CONFIG_SOUND_MSNDCLAS is not set | ||||
| # CONFIG_SOUND_MSNDPIN is not set | ||||
| # CONFIG_SOUND_OSS is not set | ||||
| 
 | ||||
| # | ||||
| # USB support | ||||
| # | ||||
| CONFIG_USB_ARCH_HAS_HCD=y | ||||
| CONFIG_USB_ARCH_HAS_OHCI=y | ||||
| # CONFIG_USB_ARCH_HAS_EHCI is not set | ||||
| # CONFIG_USB is not set | ||||
| 
 | ||||
| # | ||||
| @ -680,23 +734,18 @@ CONFIG_USB_ARCH_HAS_OHCI=y | ||||
| # USB Gadget Support | ||||
| # | ||||
| # CONFIG_USB_GADGET is not set | ||||
| # CONFIG_USB_GADGET_NET2280 is not set | ||||
| # CONFIG_USB_GADGET_PXA2XX is not set | ||||
| # CONFIG_USB_GADGET_GOKU is not set | ||||
| # CONFIG_USB_GADGET_LH7A40X is not set | ||||
| # CONFIG_USB_GADGET_OMAP is not set | ||||
| # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||||
| # CONFIG_USB_ZERO is not set | ||||
| # CONFIG_USB_ETH is not set | ||||
| # CONFIG_USB_GADGETFS is not set | ||||
| # CONFIG_USB_FILE_STORAGE is not set | ||||
| # CONFIG_USB_G_SERIAL is not set | ||||
| 
 | ||||
| # | ||||
| # MMC/SD Card support | ||||
| # | ||||
| # CONFIG_MMC is not set | ||||
| 
 | ||||
| # | ||||
| # Real Time Clock | ||||
| # | ||||
| CONFIG_RTC_LIB=y | ||||
| # CONFIG_RTC_CLASS is not set | ||||
| 
 | ||||
| # | ||||
| # File systems | ||||
| # | ||||
| @ -704,14 +753,15 @@ CONFIG_EXT2_FS=y | ||||
| # CONFIG_EXT2_FS_XATTR is not set | ||||
| # CONFIG_EXT2_FS_XIP is not set | ||||
| # CONFIG_EXT3_FS is not set | ||||
| # CONFIG_JBD is not set | ||||
| # CONFIG_REISERFS_FS is not set | ||||
| # CONFIG_JFS_FS is not set | ||||
| # CONFIG_FS_POSIX_ACL is not set | ||||
| # CONFIG_XFS_FS is not set | ||||
| # CONFIG_OCFS2_FS is not set | ||||
| # CONFIG_MINIX_FS is not set | ||||
| CONFIG_ROMFS_FS=y | ||||
| CONFIG_INOTIFY=y | ||||
| CONFIG_INOTIFY_USER=y | ||||
| # CONFIG_QUOTA is not set | ||||
| CONFIG_DNOTIFY=y | ||||
| # CONFIG_AUTOFS_FS is not set | ||||
| @ -741,7 +791,7 @@ CONFIG_SYSFS=y | ||||
| # CONFIG_TMPFS is not set | ||||
| # CONFIG_HUGETLB_PAGE is not set | ||||
| CONFIG_RAMFS=y | ||||
| # CONFIG_RELAYFS_FS is not set | ||||
| # CONFIG_CONFIGFS_FS is not set | ||||
| 
 | ||||
| # | ||||
| # Miscellaneous filesystems | ||||
| @ -843,10 +893,13 @@ CONFIG_NLS_DEFAULT="iso8859-1" | ||||
| # Kernel hacking | ||||
| # | ||||
| # CONFIG_PRINTK_TIME is not set | ||||
| # CONFIG_MAGIC_SYSRQ is not set | ||||
| # CONFIG_DEBUG_KERNEL is not set | ||||
| CONFIG_LOG_BUF_SHIFT=14 | ||||
| CONFIG_DEBUG_BUGVERBOSE=y | ||||
| # CONFIG_DEBUG_FS is not set | ||||
| CONFIG_FRAME_POINTER=y | ||||
| # CONFIG_UNWIND_INFO is not set | ||||
| # CONFIG_DEBUG_USER is not set | ||||
| 
 | ||||
| # | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue
	
	Block a user