From: Anthony Liguori <anthony@codemonkey.ws>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] enable quietbios and biosprompt checks
Date: Sat, 14 Feb 2009 16:28:59 -0600 [thread overview]
Message-ID: <499745AB.9070107@codemonkey.ws> (raw)
In-Reply-To: <1234421329-8119-4-git-send-email-FOSS@AtlasTechnologiesInc.com>
Cory Fields wrote:
> Note: Default behavior is changed. Now it will default to skipping
> the boot menu.
>
> Signed-off-by: Cory Fields <FOSS@AtlasTechnologiesInc.com>
> ---
> bios/rombios.c | 90 +++++++++++++++++++++++++++++++++++++++++--------------
> 1 files changed, 67 insertions(+), 23 deletions(-)
>
> diff --git a/bios/rombios.c b/bios/rombios.c
> index ee46e42..39a79b1 100644
> --- a/bios/rombios.c
> +++ b/bios/rombios.c
> @@ -144,6 +144,12 @@
> #define BX_PCIBIOS 1
> #define BX_APM 1
>
> +#define BX_CFG_CTL_PORT 0x510
> +#define BX_CFG_DATA_PORT 0x511
> +#define BX_CFG_SIGNATURE 0x0
> +#define BX_CFG_BIOSPROMPT 0x07
> +#define BX_CFG_QUIETBIOS 0x08
> +
> #define BX_USE_ATADRV 1
> #define BX_ELTORITO_BOOT 1
>
> @@ -2014,6 +2020,32 @@ Bit16u i; ipl_entry_t *e;
> return 1;
> }
>
> +int qemu_cfg_port_probe()
> +{
> + outw(BX_CFG_CTL_PORT, BX_CFG_SIGNATURE);
> + if (inb(BX_CFG_DATA_PORT) != 'Q') return 0;
> + if (inb(BX_CFG_DATA_PORT) != 'E') return 0;
> + if (inb(BX_CFG_DATA_PORT) != 'M') return 0;
> + if (inb(BX_CFG_DATA_PORT) != 'U') return 0;
> + return 1;
> +}
> +
> +int qemu_biosprompt_probe()
> +{
> + if(qemu_cfg_port_probe())
> + outw(BX_CFG_CTL_PORT, BX_CFG_BIOSPROMPT);
> + if (inb(BX_CFG_DATA_PORT)) return 1;
> + return 0;
> +}
> +
> +int qemu_quietbios_probe()
> +{
> + if(qemu_cfg_port_probe())
> + outw(BX_CFG_CTL_PORT, BX_CFG_QUIETBIOS);
> + if (inb(BX_CFG_DATA_PORT)) return 1;
> + return 0;
> +}
> +
> #if BX_ELTORITO_BOOT
> void
> interactive_bootkey()
> @@ -2478,7 +2510,7 @@ static int await_ide(when_done,base,timeout)
> void ata_detect( )
> {
> Bit16u ebda_seg=read_word(0x0040,0x000E);
> - Bit8u hdcount, cdcount, device, type;
> + Bit8u hdcount, cdcount, device, type, quietbios;
> Bit8u buffer[0x0200];
>
> #if BX_MAX_ATA_INTERFACES > 0
> @@ -2738,26 +2770,28 @@ void ata_detect( )
> break;
> }
>
> - switch (type) {
> - case ATA_TYPE_ATA:
> - printf("ata%d %s: ",channel,slave?" slave":"master");
> - i=0; while(c=read_byte(get_SS(),model+i++)) printf("%c",c);
> - if (sizeinmb < (1UL<<16))
> - printf(" ATA-%d Hard-Disk (%4u MBytes)\n", version, (Bit16u)sizeinmb);
> - else
> - printf(" ATA-%d Hard-Disk (%4u GBytes)\n", version, (Bit16u)(sizeinmb>>10));
> - break;
> - case ATA_TYPE_ATAPI:
> - printf("ata%d %s: ",channel,slave?" slave":"master");
> - i=0; while(c=read_byte(get_SS(),model+i++)) printf("%c",c);
> - if(read_byte(ebda_seg,&EbdaData->ata.devices[device].device)==ATA_DEVICE_CDROM)
> - printf(" ATAPI-%d CD-Rom/DVD-Rom\n",version);
> - else
> - printf(" ATAPI-%d Device\n",version);
> - break;
> - case ATA_TYPE_UNKNOWN:
> - printf("ata%d %s: Unknown device\n",channel,slave?" slave":"master");
> - break;
> + if (!quietbios){
> + switch (type) {
> + case ATA_TYPE_ATA:
> + printf("ata%d %s: ",channel,slave?" slave":"master");
> + i=0; while(c=read_byte(get_SS(),model+i++)) printf("%c",c);
> + if (sizeinmb < (1UL<<16))
> + printf(" ATA-%d Hard-Disk (%4u MBytes)\n", version, (Bit16u)sizeinmb);
> + else
> + printf(" ATA-%d Hard-Disk (%4u GBytes)\n", version, (Bit16u)(sizeinmb>>10));
> + break;
> + case ATA_TYPE_ATAPI:
> + printf("ata%d %s: ",channel,slave?" slave":"master");
> + i=0; while(c=read_byte(get_SS(),model+i++)) printf("%c",c);
> + if(read_byte(ebda_seg,&EbdaData->ata.devices[device].device)==ATA_DEVICE_CDROM)
> + printf(" ATAPI-%d CD-Rom/DVD-Rom\n",version);
> + else
> + printf(" ATAPI-%d Device\n",version);
> + break;
> + case ATA_TYPE_UNKNOWN:
> + printf("ata%d %s: Unknown device\n",channel,slave?" slave":"master");
> + break;
> + }
> }
> }
> }
> @@ -2767,7 +2801,7 @@ void ata_detect( )
> write_byte(ebda_seg,&EbdaData->ata.cdcount, cdcount);
> write_byte(0x40,0x75, hdcount);
>
> - printf("\n");
> + if (!quietbios) printf("\n");
>
Maybe just make a change in printf() to suppress output if quietbios?
Regards,
Anthony Liguori
> // FIXME : should use bios=cmos|auto|disable bits
> // FIXME : should know about translation bits
> @@ -10613,7 +10647,11 @@ post_default_ints:
> mov ax, #0xc780
> call rom_scan
>
> + call _qemu_quietbios_probe
> + test al,al
> + jnz skip_bios_print
> call _print_bios_banner
> + skip_bios_print:
>
> #if BX_ROMBIOS32
> call rombios32_init
> @@ -10660,7 +10698,13 @@ post_default_ints:
> call rom_scan
>
> #if BX_ELTORITO_BOOT
> - call _interactive_bootkey
> +
> + call _qemu_biosprompt_probe
> + test al,al
> + jz skip_timer
> + call _interactive_bootkey
> +
> +skip_timer:
> #endif // BX_ELTORITO_BOOT
>
> sti ;; enable interrupts
>
next prev parent reply other threads:[~2009-02-14 22:29 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-12 6:48 [Qemu-devel] [PATCH 0/4] Cory Fields
2009-02-12 6:48 ` [Qemu-devel] [PATCH] Define a new route for sending data to bios Cory Fields
2009-02-12 6:41 ` Gleb Natapov
2009-02-12 15:50 ` Blue Swirl
2009-02-12 6:48 ` [Qemu-devel] [PATCH] Add args for quiet and prompt Cory Fields
2009-02-12 10:42 ` Kevin Wolf
2009-02-14 22:27 ` Anthony Liguori
2009-02-15 0:07 ` Cory Fields
2009-02-12 6:48 ` [Qemu-devel] [PATCH] enable quietbios and biosprompt checks Cory Fields
2009-02-14 22:28 ` Anthony Liguori [this message]
2009-02-15 0:09 ` Cory Fields
2009-02-12 6:48 ` [Qemu-devel] [PATCH] enable quietbios check Cory Fields
-- strict thread matches above, loose matches on Subject: below --
2009-02-14 23:57 [Qemu-devel] [PATCH 0/4] Option to suppress bios output and prompt (v2) Cory Fields
2009-02-14 23:57 ` [Qemu-devel] [PATCH] enable quietbios and biosprompt checks Cory Fields
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=499745AB.9070107@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.