From: Kevin Wolf <kwolf@redhat.com>
To: "Hervé Poussineau" <hpoussin@reactos.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 09/11] fdc: check if media rate is correct before doing any transfer
Date: Tue, 14 Feb 2012 16:16:44 +0100 [thread overview]
Message-ID: <4F3A7ADC.10209@redhat.com> (raw)
In-Reply-To: <1328563752-3976-10-git-send-email-hpoussin@reactos.org>
Am 06.02.2012 22:29, schrieb Hervé Poussineau:
> The programmed rate has to be the same as the required rate for the
> floppy format ; if that's not the case, the transfer should abort.
> This check can be disabled by using the 'check_media_rate' property.
>
> Save media rate value only if media rate check is enabled.
>
> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
> ---
> hw/fdc.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++---
> 1 files changed, 50 insertions(+), 3 deletions(-)
>
> diff --git a/hw/fdc.c b/hw/fdc.c
> index af007ae..d2a22fa 100644
> --- a/hw/fdc.c
> +++ b/hw/fdc.c
> @@ -62,12 +62,15 @@
> #define FD_SECTOR_SC 2 /* Sector size code */
> #define FD_RESET_SENSEI_COUNT 4 /* Number of sense interrupts on RESET */
>
> +typedef struct FDCtrl FDCtrl;
> +
> /* Floppy disk drive emulation */
> typedef enum FDiskFlags {
> FDISK_DBL_SIDES = 0x01,
> } FDiskFlags;
>
> typedef struct FDrive {
> + FDCtrl *fdctrl;
> BlockDriverState *bs;
> /* Drive status */
> FDriveType drive;
> @@ -83,6 +86,7 @@ typedef struct FDrive {
> uint16_t bps; /* Bytes per sector */
> uint8_t ro; /* Is read-only */
> uint8_t media_changed; /* Is media changed */
> + uint8_t media_rate; /* Data rate of medium */
> } FDrive;
>
> static void fd_init(FDrive *drv)
> @@ -195,6 +199,7 @@ static void fd_revalidate(FDrive *drv)
> drv->last_sect = last_sect;
> drv->ro = ro;
> drv->drive = drive;
> + drv->media_rate = rate;
> } else {
> FLOPPY_DPRINTF("No disk in drive\n");
> drv->last_sect = 0;
> @@ -206,8 +211,6 @@ static void fd_revalidate(FDrive *drv)
> /********************************************************/
> /* Intel 82078 floppy disk controller emulation */
>
> -typedef struct FDCtrl FDCtrl;
> -
> static void fdctrl_reset(FDCtrl *fdctrl, int do_irq);
> static void fdctrl_reset_fifo(FDCtrl *fdctrl);
> static int fdctrl_transfer_handler (void *opaque, int nchan,
> @@ -303,6 +306,7 @@ enum {
> };
>
> enum {
> + FD_SR1_MA = 0x01, /* Missing address mark */
> FD_SR1_NW = 0x02, /* Not writable */
> FD_SR1_EC = 0x80, /* End of cylinder */
> };
> @@ -549,6 +553,24 @@ static const VMStateDescription vmstate_fdrive_media_changed = {
> }
> };
>
> +static bool fdrive_media_rate_needed(void *opaque)
> +{
> + FDrive *drive = opaque;
> +
> + return drive->fdctrl->check_media_rate;
> +}
> +
> +static const VMStateDescription vmstate_fdrive_media_rate = {
> + .name = "fdrive/media_rate",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .minimum_version_id_old = 1,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT8(media_rate, FDrive),
> + VMSTATE_END_OF_LIST()
> + }
> +};
Juan, Paolo, this is a subsection in a struct array. Does this work
meanwhile or is it still broken?
Kevin
next prev parent reply other threads:[~2012-02-14 15:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-06 21:29 [Qemu-devel] [PATCH v4 00/11] Misc fixes for floppy emulation Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 01/11] fdc: take side count into account Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 02/11] fdc: set busy bit when starting a command Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 03/11] fdc: most control commands do not generate interrupts Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 04/11] fdc: handle read-only floppies (abort early on write commands) Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 05/11] fdc: add CCR (Configuration Control Register) write register Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 06/11] block: add a transfer rate for floppy types Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 07/11] pc: add 1.1 machine type Hervé Poussineau
2012-02-14 15:11 ` Kevin Wolf
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 08/11] fdc: add a 'check media rate' property. Not used yet Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 09/11] fdc: check if media rate is correct before doing any transfer Hervé Poussineau
2012-02-14 15:16 ` Kevin Wolf [this message]
2012-02-14 15:28 ` Paolo Bonzini
2012-02-14 15:34 ` Kevin Wolf
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 10/11] fdc: fix seek command, which shouldn't check tracks Hervé Poussineau
2012-02-06 21:29 ` [Qemu-devel] [PATCH v4 11/11] fdc: DIR (Digital Input Register) should return status of current drive Hervé Poussineau
2012-02-14 12:31 ` [Qemu-devel] [PATCH v4 00/11] Misc fixes for floppy emulation Hervé Poussineau
2012-02-14 15:27 ` Kevin Wolf
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=4F3A7ADC.10209@redhat.com \
--to=kwolf@redhat.com \
--cc=hpoussin@reactos.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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.