posted by qubix on December 28, 2012

Λοιπόν τελικά έβαλα arch να υσηχάσω στο λάπτοπ. Όλα καλά και όλα ωραία, μου πήρε μια μέρα να το σετάρω γενικώς και είναι ελαφρύ, γρήγορο και με πολύ καλή ανταπόκριση.
Δυστυχώς όμως..δεν μπορούσα να συνδεθώ ΜΕ ΤΙΠΟΤΑ με dhcp από την ethernet θύρα. Αρχικά δεν έβγαζα άκρη με διάφορα περίεργα μηνύματα στο dmesg τα οποία δεν πολυκαταλάβαινα
e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth0: link is not ready

και το dhcpd να κολλάει στο
waiting for carrier...
Μετά από πολύ ψάξιμο, ανακάλυψα πως υπάρχει bug με το MSI όταν προσπαθεί να ξυπνήσει η κάρτα καθώς βρίσκεται σε D3 status (μπορείτε να τσεκάρετε το status με lspci -vvnn, θα δείτε κάτι σαν το
Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=1 PME+)
Χοντρικά λοιπόν, η κάρτα πρέπει να ξυπνήσει όταν είναι inactive και γιαυτό χρησιμοποιούνται τα MSI/MSI-X interrupts, οπότε στα logs βλέπουμε τα request για αυτά τα interrupts, τα οποία όμως δεν καταφέρνουν τίποτα απολύτως καθότι ο εν λόγω driver έχει κάποιο bug και δεν καταλαβαίνει πως να στείλει το ανάλογο μήνυμα στον kernel οτι ένα interrupt συνέβη επειδή πχ συνδέσαμε το καλώδιο lan στην θύρα.

Κάπου εδώ αρχίζει ο δεύτερος γολγοθάς προσπαθώντας να βρω workaround. Τα παρακάτω απέτυχαν παταγωδώς:
1) διαγραφή και επαναφόρτωση του module
rmmod e1000e && modprobe e1000e
2) διάφορα boot flags όπως
pcie_msi=off/auto/no_msi
3) disable από το laptop mode tools το power management της κάρτας

τελικά τη λύση έδωσε το powertop(!!) Μόλις από το menu "tunables" άλλαξα το PM για την ethernet από Good σε Bad, et voila, όλα δουλεύουν ρολόι!!
όχι πως αυτό τώρα είναι σοβαρή λύση..αλλαά...

hyperworks