[syslinux:master] PXE ISR: Force polling on select hardware WORKAROUND

syslinux-bot for Gene Cumm gene.cumm at gmail.com
Sun Jul 13 10:54:06 PDT 2014


Commit-ID:  3741886cb700e1017d70f1753f013fa10f4d9272
Gitweb:     http://www.syslinux.org/commit/3741886cb700e1017d70f1753f013fa10f4d9272
Author:     Gene Cumm <gene.cumm at gmail.com>
AuthorDate: Sun, 13 Jul 2014 11:18:50 -0400
Committer:  Gene Cumm <gene.cumm at gmail.com>
CommitDate: Sun, 13 Jul 2014 11:18:50 -0400

PXE ISR: Force polling on select hardware WORKAROUND

Like 2fe3a7bd, certain Dell machines (OptiPlex 990) state interrupts
should work but effectively don't.  Force polling.

Reported-by: Alexander Perlis <aperlis at math.lsu.edu>
Signed-off-by: Gene Cumm <gene.cumm at gmail.com>

---
 core/fs/pxe/isr.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/core/fs/pxe/isr.c b/core/fs/pxe/isr.c
index d0a0bf9..ddaadf9 100644
--- a/core/fs/pxe/isr.c
+++ b/core/fs/pxe/isr.c
@@ -266,11 +266,10 @@ void pxe_start_isr(void)
 	dprintf("pxe_start_isr: trying poll by model\n");
 	int hwad = ((int)MAC[0] << 16) + ((int)MAC[1] << 8) + MAC[2];
 	dprintf("pxe_start_isr: got %06x %04x\n", hwad, pxe_undi_iface.ServiceFlags);
-	if (hwad == 0x000023ae) {
-	    if (pxe_undi_iface.ServiceFlags == 0xdc1b) {
+	if ((hwad == 0x000023ae) && (pxe_undi_iface.ServiceFlags == 0xdc1b) ||
+	    (hwad == 0x00180373) && (pxe_undi_iface.ServiceFlags == 0xdc1b)) {
 		asm volatile("orb $1,%0" : "+m" (pxe_need_poll));
 		dprintf("pxe_start_isr: forcing pxe_need_poll by model\n");
-	    }
 	}
     }
 }


More information about the Syslinux-commits mailing list