[syslinux] [syslinux:master] PXE ISR: Force polling on select hardware WORKAROUND
H. Peter Anvin
hpa at zytor.com
Sun Jul 13 19:26:55 PDT 2014
On 07/13/2014 10:54 AM, syslinux-bot for Gene Cumm wrote:
> 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");
> - }
> }
> }
Thank you. I'm wondering if we also should force polling on if we have
gotten no interrupts after a number of transmit attempts.
-hpa
More information about the Syslinux
mailing list