2007-11-05 Robert Millan <rmh@aybabtu.com>
* kern/disk.c (grub_disk_firmware_fini) (grub_disk_firmware_is_tainted): New variables. * include/grub/disk.h (grub_disk_firmware_fini) (grub_disk_firmware_is_tainted): Likewise. * disk/i386/pc/biosdisk.c (GRUB_MOD_FINI(biosdisk)): Moved from here ... (grub_disk_biosdisk_fini): ... to here. (GRUB_MOD_FINI(biosdisk)): Implement using grub_disk_biosdisk_fini(). (GRUB_MOD_INIT(biosdisk)): Abort when `grub_disk_firmware_is_tainted' is set. Register grub_disk_biosdisk_fini() in `grub_disk_firmware_fini'. * disk/ata.c: Remove `<grub/machine/biosdisk.h>'. (GRUB_MOD_INIT(ata)): Remove grub_biosdisk_fini() call. Use `grub_disk_firmware_is_tainted' and `grub_disk_firmware_fini' to finish existing firmware disk interface. * conf/i386-linuxbios.rmk (pkgdata_MODULES): Add `ata.mod'. (ata_mod_SOURCES): New variable. (ata_mod_CFLAGS): Likewise. (ata_mod_LDFLAGS): Likewise.
This commit is contained in:
parent
0149ab7c63
commit
5ab33bba2f
7 changed files with 111 additions and 6 deletions
10
disk/ata.c
10
disk/ata.c
|
@ -24,7 +24,6 @@
|
|||
#include <grub/time.h>
|
||||
/* XXX: For now this only works on i386. */
|
||||
#include <grub/cpu/io.h>
|
||||
#include <grub/machine/biosdisk.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -733,8 +732,13 @@ GRUB_MOD_INIT(ata)
|
|||
{
|
||||
(void) mod; /* To stop warning. */
|
||||
|
||||
/* XXX: To prevent two drivers operating on the same disks. */
|
||||
grub_biosdisk_fini ();
|
||||
/* To prevent two drivers operating on the same disks. */
|
||||
grub_disk_firmware_is_tainted = 1;
|
||||
if (grub_disk_firmware_fini)
|
||||
{
|
||||
grub_disk_firmware_fini ();
|
||||
grub_disk_firmware_fini = NULL;
|
||||
}
|
||||
|
||||
/* ATA initialization. */
|
||||
grub_ata_initialize ();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue