From: robertmh Date: Sat, 29 Nov 2008 21:05:59 +0000 (+0000) Subject: 2008-11-29 Robert Millan X-Git-Tag: 1.98~1187 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fd0ee30f823f9f9508d51e9f8f120e396dae244;p=thirdparty%2Fgrub.git 2008-11-29 Robert Millan * disk/ata.c (grub_ata_pciinit): Handle errors rised by grub_ata_device_initialize() calls. --- diff --git a/ChangeLog b/ChangeLog index f3b277020..6f4934cf6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-11-29 Robert Millan + + * disk/ata.c (grub_ata_pciinit): Handle errors rised by + grub_ata_device_initialize() calls. + 2008-11-28 Krzysztof Smiechowicz * fs/affs.c (grub_affs_iterate_dir): Return failure when directory diff --git a/disk/ata.c b/disk/ata.c index 214a2cac7..6e0b8b805 100644 --- a/disk/ata.c +++ b/disk/ata.c @@ -541,7 +541,25 @@ grub_ata_pciinit (int bus, int device, int func, if (rega && regb) { grub_ata_device_initialize (controller * 2 + i, 0, rega, regb); + + /* Most errors rised by grub_ata_device_initialize() are harmless. + They just indicate this particular drive is not responding, most + likely because it doesn't exist. We might want to ignore specific + error types here, instead of printing them. */ + if (grub_errno) + { + grub_print_error (); + grub_errno = GRUB_ERR_NONE; + } + grub_ata_device_initialize (controller * 2 + i, 1, rega, regb); + + /* Likewise. */ + if (grub_errno) + { + grub_print_error (); + grub_errno = GRUB_ERR_NONE; + } } }