grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: grub.pxe, ARP-after-boot, DMA, and trouble


From: Daniel Kahn Gillmor
Subject: Re: grub.pxe, ARP-after-boot, DMA, and trouble
Date: Wed, 11 Apr 2012 14:16:04 -0400
User-agent: Notmuch/0.12 (http://notmuchmail.org) Emacs/23.4.1 (i486-pc-linux-gnu)

On Sat, 07 Apr 2012 01:36:44 -0400, Daniel Kahn Gillmor <address@hidden> wrote:
> In particular, i suspect that *after* the bootloader has turned over
> control to the kernel (memtest in this case), the PXE-driven NIC is
> continuing to DMA received packets into active RAM.

phcoder sent me the patch below to address the PXE DMA issue.

I tested it against the current bzr head.

My testing grub.cfg is just:

----------------------
serial --speed=115200
terminal_input console serial
terminal_output console serial

linux16 (pxe)/memtest86+.bin console=ttyS0,115200n8
boot
----------------------

Using grub bzr head without this patch, i get these RAM "failures" on
the net-booted ThinkCentre M70 within ~15 seconds on roughly every other
boot (i haven't found the right packets to inject to force the DMA to
happen consistently, alas).

Using grub bzr head with the patch, i have been unable to reproduce
a single RAM failures in more than 20 trials.

I think this patch resolves the issue, and should go into the mainline.

Thanks, phcoder!

        --dkg

=== modified file 'grub-core/net/drivers/i386/pc/pxe.c'
--- grub-core/net/drivers/i386/pc/pxe.c 2012-02-08 18:26:01 +0000
+++ grub-core/net/drivers/i386/pc/pxe.c 2012-04-11 12:53:17 +0000
@@ -278,9 +278,14 @@
 grub_pxe_close (const struct grub_net_card *dev __attribute__ ((unused)))
 {
   if (pxe_rm_entry)
-    grub_pxe_call (GRUB_PXENV_UNDI_CLOSE,
-                  (void *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR,
-                  pxe_rm_entry);
+    {
+      grub_pxe_call (GRUB_PXENV_UNDI_CLOSE,
+                    (void *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR,
+                    pxe_rm_entry);
+      grub_pxe_call (GRUB_PXENV_UNDI_SHUTDOWN,
+                    (void *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR,
+                    pxe_rm_entry);
+    }
 }
 
 static grub_err_t

Attachment: pgphL7RwNKN01.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]