<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/index.php?title=IDE_No_Probe&amp;feed=atom&amp;action=history</id>
		<title>IDE No Probe - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/index.php?title=IDE_No_Probe&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=IDE_No_Probe&amp;action=history"/>
		<updated>2013-05-25T18:43:04Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.22alpha</generator>

	<entry>
		<id>http://elinux.org/index.php?title=IDE_No_Probe&amp;diff=7948&amp;oldid=prev</id>
		<title>FransMeulenbroeks at 12:41, 16 November 2008</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=IDE_No_Probe&amp;diff=7948&amp;oldid=prev"/>
				<updated>2008-11-16T12:41:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 12:41, 16 November 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 61:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 61:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Boot Time]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Boot Time]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;IDE No Probe&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Kernel&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FransMeulenbroeks</name></author>	</entry>

	<entry>
		<id>http://elinux.org/index.php?title=IDE_No_Probe&amp;diff=1587&amp;oldid=prev</id>
		<title>Wmat: Legacy Content Conversion</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=IDE_No_Probe&amp;diff=1587&amp;oldid=prev"/>
				<updated>2006-12-06T20:31:00Z</updated>
		
		<summary type="html">&lt;p&gt;Legacy Content Conversion&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''''Preliminary Draft''''' under construction&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This page describes the feature &amp;quot;forced IDE noprobe&amp;quot;. Normally, the Linux kernel supports the ability to avoid probing for specific IDE drives and IDE interfaces, using a command line argument specified at boot time.  The command line argument is &amp;quot;hdx==noprobe&amp;quot; or &amp;quot;idex==noprobe&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Under certain conditions this command line argument is not observed by the Linux kernel (at least for version 2.4.20).  This &amp;quot;feature&amp;quot; forces the kernel to observe the &amp;quot;noprobe&amp;quot; command for IDE interfaces.&lt;br /&gt;
&lt;br /&gt;
The fix here records the fact that &amp;quot;noprobe&amp;quot; was specified on the command line (via &amp;quot;the forcenoprobe&amp;quot; field), and skips probing the device if it is set, even if the driver has changed the setting of the noprobe field.  This is&lt;br /&gt;
all a quick hack, and a more systemic rewrite of noprobe handling would be more appropriate for community work, if this is still needed.&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
Probing IDE devices can take a few seconds during system startup.  It is especially painful to probe interfaces which are known not to be used in an embedded device.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
=== Patch ===&lt;br /&gt;
*Patch for CELF tree is isolated here: ide-noprobe.patch&lt;br /&gt;
*[[Image:Alert.gif]]THIS PATCH (IN ITS ISOLATED FORM) HAS NOT BEEN VERIFIED&lt;br /&gt;
*Patch for 2.4.xx is ''needed''&lt;br /&gt;
*Don't know if patch for 2.6.xx is needed&lt;br /&gt;
&lt;br /&gt;
=== Utility programs ===&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
== How To Use ==&lt;br /&gt;
*Apply this patch to your CELF tree (or verify that it is already present)&lt;br /&gt;
*use &amp;quot;ide1==noprobe&amp;quot; on the kernel command line&lt;br /&gt;
**see the documentation on ide driver command line parameters in the file: &amp;lt;pre&amp;gt;drivers/ide/ide.c&amp;lt;/pre&amp;gt;&lt;br /&gt;
**The documentation is in a comment right before the routine &amp;lt;pre&amp;gt;ide-setup()&amp;lt;/pre&amp;gt;, at about line 3200 in the file.&lt;br /&gt;
*verify that no probing is done for ide1&lt;br /&gt;
*measure the time savings from using the patch and the &amp;quot;noprobe&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
== Sample Results ==&lt;br /&gt;
=== Experimental Results #1 ===&lt;br /&gt;
Todd Poynor of MontaVista measured the effect of specifying &amp;quot;hdf==none ide3==noprobe&amp;quot; (avoid probing ide2 slave and both ide3 devices) on a 200MHz IBM 405GP &amp;quot;Walnut&amp;quot; evaluation board with a 33MHz PCI bus. A Seagate Barracuda ATA IV 60GB disk drive was cabled to one of the two IDE interfaces on a Promise Ultra66 PCI-IDE bridge card (PDC20262 chipset). All of the drivers for PCI, IDE, PCI-IDE disk, and EXT2 file system were built into the kernel.&lt;br /&gt;
&lt;br /&gt;
The time to init IDE was 1.3 seconds when the missing devices were probed, and about 230 milliseconds when &amp;quot;hdf==none ide3==noprobe&amp;quot; was specified.  Thus, the resulting bootup time savings were about 1.1 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Experimental Results #2 ===&lt;br /&gt;
&lt;br /&gt;
=== Experimental Results #3 ===&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
More details on the original problem in case you're interested...&lt;br /&gt;
&lt;br /&gt;
drivers/ide/ide.c: ide_setup() is called early in start_kernel sequence (via parse_options -&amp;gt; checksetup -&amp;gt; __setup() macro mechanism).  It calls init_hwif_data to init each interface to &amp;quot;noprobe==1&amp;quot;.  Then parses cmd line params such as &amp;quot;ide1==noprobe&amp;quot;, setting noprobe back to 1.&lt;br /&gt;
&lt;br /&gt;
Later, drivers such as the PCI-IDE bridge driver, at &amp;lt;pre&amp;gt;drivers/ide/ide-pci.c: ide_setup_pci_device&amp;lt;/pre&amp;gt;, resets the value of noprobe according to whether there's a valid interface there:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       hwif-&amp;gt;noprobe == !hwif-&amp;gt;io_ports[IDE_DATA_OFFSET];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This undoes the effect of any &amp;quot;noprobe&amp;quot; cmd line option.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Here is a list of things that could be worked on for this feature:&lt;br /&gt;
*get an exhaustive list of places where noprobe is reset by the kernel&lt;br /&gt;
*find out why community overrides this flag in places?&lt;br /&gt;
*maybe refactor to be a &amp;quot;forcenoprobe&amp;quot; option?&lt;br /&gt;
*find out if the same problem exists in 2.6.xx kernels&lt;br /&gt;
&lt;br /&gt;
[[Category:Boot Time]]&lt;br /&gt;
[[Category:IDE No Probe]]&lt;/div&gt;</summary>
		<author><name>Wmat</name></author>	</entry>

	</feed>