* [PATCH] e1000e: Fix usage under kexec
@ 2009-11-09 20:25 Sven Anders
2009-11-10 9:35 ` Andi Kleen
2009-11-17 9:21 ` Stefan Assmann
0 siblings, 2 replies; 6+ messages in thread
From: Sven Anders @ 2009-11-09 20:25 UTC (permalink / raw)
To: netdev
[-- Attachment #1.1: Type: text/plain, Size: 1516 bytes --]
Hello!
We're experiencing the following problem:
We start a minimal linux system, prepare the system and start the
final system via kexec.
On two different systems (one with a 82573 and one with a 82574),
the driver cannot initialize the network hardware, because the PHY
is not recognized.
We get the following error:
e1000e: probe of 0000:02:00.0 failed with error -2
We cannot unload the driver of the first kernel, because it's
compiled in statically.
It's caused by the PHY, because it's already initialized by the
first driver and therefore does not respond correctly. The driver
assumes the PHY to be in 'reset' state, which is done by the BIOS.
We fixed it by adding a
+ /* Reset PHY before initializing it. Allows re-init after kexec. */
+ if (!e1000_check_reset_block(hw))
+ e1000_phy_hw_reset(hw);
to the initialization routine. I'm not sure, if we need the additional
"block" check.
A patch is attached.
Please send a note, if the patch is correct or wrong...
Regards
Sven Anders
--
Sven Anders <anders@anduras.de> () Ascii Ribbon Campaign
/\ Support plain text e-mail
ANDURAS service solutions AG
Innstrasse 71 - 94036 Passau - Germany
Web: www.anduras.de - Tel: +49 (0)851-4 90 50-0 - Fax: +49 (0)851-4 90 50-55
Those who would give up essential Liberty, to purchase a little
temporary Safety, deserve neither Liberty nor Safety.
- Benjamin Franklin
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: e1000e-kexec.patch --]
[-- Type: text/x-patch; name="e1000e-kexec.patch", Size: 507 bytes --]
--- linux-2.6.29.6/drivers/net/e1000e/82571.c.orig 2009-11-04 00:44:27.000000000 +0100
+++ linux-2.6.29.6/drivers/net/e1000e/82571.c 2009-11-04 00:44:19.000000000 +0100
@@ -107,6 +107,10 @@ static s32 e1000_init_phy_params_82571(s
break;
}
+ /* Reset PHY before initializing it. Allows re-init after kexec. */
+ if (!e1000_check_reset_block(hw))
+ e1000_phy_hw_reset(hw);
+
/* This can only be done after all function pointers are setup. */
ret_val = e1000_get_phy_id_82571(hw);
[-- Attachment #1.3: sven.vcf --]
[-- Type: text/x-vcard, Size: 307 bytes --]
begin:vcard
fn:Sven Anders
n:Anders;Sven
adr;quoted-printable:;;Weidestra=C3=9Fe 19;Hannover;Niedersachsen;30453;Deutschland
email;internet:sven@anduras.de
tel;home:+49 (0)511 / 2123090
tel;cell:+49 (0)170 / 8091180
x-mozilla-html:FALSE
url:http://staff.anduras.de/anders
version:2.1
end:vcard
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 260 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] e1000e: Fix usage under kexec
2009-11-09 20:25 [PATCH] e1000e: Fix usage under kexec Sven Anders
@ 2009-11-10 9:35 ` Andi Kleen
2009-11-17 9:21 ` Stefan Assmann
1 sibling, 0 replies; 6+ messages in thread
From: Andi Kleen @ 2009-11-10 9:35 UTC (permalink / raw)
To: Sven Anders; +Cc: netdev
Sven Anders <sven@anduras.de> writes:
>
> We get the following error:
> e1000e: probe of 0000:02:00.0 failed with error -2
>
> We cannot unload the driver of the first kernel, because it's
> compiled in statically.
>
> It's caused by the PHY, because it's already initialized by the
> first driver and therefore does not respond correctly. The driver
> assumes the PHY to be in 'reset' state, which is done by the BIOS.
>
> We fixed it by adding a
>
> + /* Reset PHY before initializing it. Allows re-init after kexec. */
> + if (!e1000_check_reset_block(hw))
> + e1000_phy_hw_reset(hw);
The problem of resetting PHYs in the driver init path is that it tends
to lose link-state, and if the link takes some time to re-negotiate
you can significantly slow down the "total time to network access"
at boot.
Perhaps you could only reset when the message above would trigger
and try again?
-Andi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] e1000e: Fix usage under kexec
2009-11-09 20:25 [PATCH] e1000e: Fix usage under kexec Sven Anders
2009-11-10 9:35 ` Andi Kleen
@ 2009-11-17 9:21 ` Stefan Assmann
2009-11-17 21:28 ` Tantilov, Emil S
2009-11-17 21:34 ` Tantilov, Emil S
1 sibling, 2 replies; 6+ messages in thread
From: Stefan Assmann @ 2009-11-17 9:21 UTC (permalink / raw)
To: Sven Anders; +Cc: netdev
On 09.11.2009 21:25, Sven Anders wrote:
> Hello!
>
> We're experiencing the following problem:
>
> We start a minimal linux system, prepare the system and start the
> final system via kexec.
> On two different systems (one with a 82573 and one with a 82574),
> the driver cannot initialize the network hardware, because the PHY
> is not recognized.
>
> We get the following error:
> e1000e: probe of 0000:02:00.0 failed with error -2
Hi Sven,
have a look at the following thread, it seems very similar.
http://kerneltrap.org/mailarchive/linux-netdev/2009/3/7/5114394
Stefan
--
Stefan Assmann | Red Hat GmbH
Software Engineer | Otto-Hahn-Strasse 20, 85609 Dornach
| HR: Amtsgericht Muenchen HRB 153243
| GF: Brendan Lane, Charlie Peters,
sassmann at redhat.com | Michael Cunningham, Charles Cachera
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] e1000e: Fix usage under kexec
2009-11-17 9:21 ` Stefan Assmann
@ 2009-11-17 21:28 ` Tantilov, Emil S
2009-11-17 21:34 ` Tantilov, Emil S
1 sibling, 0 replies; 6+ messages in thread
From: Tantilov, Emil S @ 2009-11-17 21:28 UTC (permalink / raw)
To: Stefan Assmann, Sven Anders; +Cc: netdev
Stefan Assmann wrote:
> On 09.11.2009 21:25, Sven Anders wrote:
>> Hello!
>>
>> We're experiencing the following problem:
>>
>> We start a minimal linux system, prepare the system and start the
>> final system via kexec. On two different systems (one with a 82573
>> and one with a 82574), the driver cannot initialize the network
>> hardware, because the PHY is not recognized.
>>
>> We get the following error:
>> e1000e: probe of 0000:02:00.0 failed with error -2
>
> Hi Sven,
>
> have a look at the following thread, it seems very similar.
> http://kerneltrap.org/mailarchive/linux-netdev/2009/3/7/5114394
>
> Stefan
> --
> Stefan Assmann | Red Hat GmbH
> Software Engineer | Otto-Hahn-Strasse 20, 85609 Dornach
> | HR: Amtsgericht Muenchen HRB 153243
> | GF: Brendan Lane, Charlie Peters,
> sassmann at redhat.com | Michael Cunningham, Charles Cachera
But there is already similar code in e1000e:
http://git.kernel.org/?p=linux/kernel/git/davem/net-2.6.git;a=commit;h=4f9de721ab73a5271a79b126f7b5140b01a05c99
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] e1000e: Fix usage under kexec
2009-11-17 9:21 ` Stefan Assmann
2009-11-17 21:28 ` Tantilov, Emil S
@ 2009-11-17 21:34 ` Tantilov, Emil S
2009-12-04 9:10 ` Sven Anders
1 sibling, 1 reply; 6+ messages in thread
From: Tantilov, Emil S @ 2009-11-17 21:34 UTC (permalink / raw)
To: Stefan Assmann, Sven Anders; +Cc: netdev
Stefan Assmann wrote:
> On 09.11.2009 21:25, Sven Anders wrote:
>> Hello!
>>
>> We're experiencing the following problem:
>>
>> We start a minimal linux system, prepare the system and start the
>> final system via kexec. On two different systems (one with a 82573
>> and one with a 82574), the driver cannot initialize the network
>> hardware, because the PHY is not recognized.
>>
>> We get the following error:
>> e1000e: probe of 0000:02:00.0 failed with error -2
>
> Hi Sven,
>
> have a look at the following thread, it seems very similar.
> http://kerneltrap.org/mailarchive/linux-netdev/2009/3/7/5114394
>
> Stefan
> --
> Stefan Assmann | Red Hat GmbH
> Software Engineer | Otto-Hahn-Strasse 20, 85609 Dornach
> | HR: Amtsgericht Muenchen HRB 153243
> | GF: Brendan Lane, Charlie Peters,
> sassmann at redhat.com | Michael Cunningham, Charles Cachera
Ignore my previous email - wrong click sent it sooner than intended.
There is already similar code in e1000e:
http://git.kernel.org/?p=linux/kernel/git/davem/net-2.6.git;a=commit;h=4f9de721ab73a5271a79b126f7b5140b01a05c99
Sven, could you provide some additional information about your system and kernel/driver verison you used when the issue occurred?
I have not been able to reproduce it on my setup.
Thanks,
Emil
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] e1000e: Fix usage under kexec
2009-11-17 21:34 ` Tantilov, Emil S
@ 2009-12-04 9:10 ` Sven Anders
0 siblings, 0 replies; 6+ messages in thread
From: Sven Anders @ 2009-12-04 9:10 UTC (permalink / raw)
To: Tantilov, Emil S; +Cc: Stefan Assmann, netdev, Andi Kleen
[-- Attachment #1.1: Type: text/plain, Size: 2951 bytes --]
Tantilov, Emil S schrieb:
> Stefan Assmann wrote:
>> On 09.11.2009 21:25, Sven Anders wrote:
>>>
>>> We're experiencing the following problem:
>>>
>>> We start a minimal linux system, prepare the system and start the
>>> final system via kexec. On two different systems (one with a 82573
>>> and one with a 82574), the driver cannot initialize the network
>>> hardware, because the PHY is not recognized.
>>>
>>> We get the following error:
>>> e1000e: probe of 0000:02:00.0 failed with error -2
>> Hi Sven,
>>
>> have a look at the following thread, it seems very similar.
>> http://kerneltrap.org/mailarchive/linux-netdev/2009/3/7/5114394
>
> There is already similar code in e1000e:
> http://git.kernel.org/?p=linux/kernel/git/davem/net-2.6.git;a=commit;h=4f9de721ab73a5271a79b126f7b5140b01a05c99
Yes it sound similar. We will test this when we upgrade the kernel for
our next OS release...
> Sven, could you provide some additional information about your system and
> kernel/driver verison you used when the issue occurred?
> I have not been able to reproduce it on my setup.
Currently we are using the Linux kernel 2.6.29.6 for our appliances.
Which is/was the first officially released kernel with this patch?
Andi Kleen wrote:
>> We fixed it by adding a
>> >
>> > + /* Reset PHY before initializing it. Allows re-init after kexec. */
>> > + if (!e1000_check_reset_block(hw))
>> > + e1000_phy_hw_reset(hw);
>
> The problem of resetting PHYs in the driver init path is that it tends
> to lose link-state, and if the link takes some time to re-negotiate
> you can significantly slow down the "total time to network access"
> at boot.
>
> Perhaps you could only reset when the message above would trigger
> and try again?
>
> -Andi
Ok, know we are doing the following. But maybe it isn't needed with the
new kernel any more...
@@ -109,6 +109,13 @@ static s32 e1000_init_phy_params_82571(s
/* This can only be done after all function pointers are setup. */
ret_val = e1000_get_phy_id_82571(hw);
+ /* Could not determine PHY id. This can happen when booting
+ via kexec. So reset and try again. */
+ if (ret_val == -E1000_ERR_PHY) {
+ e1000_phy_hw_reset(hw);
+ ret_val = e1000_get_phy_id_82571(hw);
+ }
+
/* Verify phy id */
switch (hw->mac.type) {
case e1000_82571:
Regards
Sven Anders
--
Sven Anders <anders@anduras.de> () Ascii Ribbon Campaign
/\ Support plain text e-mail
ANDURAS service solutions AG
Innstrasse 71 - 94036 Passau - Germany
Web: www.anduras.de - Tel: +49 (0)851-4 90 50-0 - Fax: +49 (0)851-4 90 50-55
Those who would give up essential Liberty, to purchase a little
temporary Safety, deserve neither Liberty nor Safety.
- Benjamin Franklin
[-- Attachment #1.2: sven.vcf --]
[-- Type: text/x-vcard, Size: 307 bytes --]
begin:vcard
fn:Sven Anders
n:Anders;Sven
adr;quoted-printable:;;Weidestra=C3=9Fe 19;Hannover;Niedersachsen;30453;Deutschland
email;internet:sven@anduras.de
tel;home:+49 (0)511 / 2123090
tel;cell:+49 (0)170 / 8091180
x-mozilla-html:FALSE
url:http://staff.anduras.de/anders
version:2.1
end:vcard
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 260 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-12-04 9:10 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-09 20:25 [PATCH] e1000e: Fix usage under kexec Sven Anders
2009-11-10 9:35 ` Andi Kleen
2009-11-17 9:21 ` Stefan Assmann
2009-11-17 21:28 ` Tantilov, Emil S
2009-11-17 21:34 ` Tantilov, Emil S
2009-12-04 9:10 ` Sven Anders
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).