* [Qemu-devel] [PATCH] fdc: fix detection under Linux
@ 2016-01-29 22:35 John Snow
2016-01-30 0:15 ` Eric Blake
2016-02-01 21:02 ` Hervé Poussineau
0 siblings, 2 replies; 3+ messages in thread
From: John Snow @ 2016-01-29 22:35 UTC (permalink / raw)
To: qemu-block; +Cc: John Snow, pbonzini, hpoussin, qemu-devel
Accidentally, I removed a "feature" where empty drives had geometry
values applied to them, which allows seek on empty drives to work
"by accident," as QEMU actually tries to disallow that.
Seeks on empty drives should work, though, but the easiest thing is to
restore the misfeature where empty drives have non-zero geometries
applied.
Document the hack accordingly.
Signed-off-by: John Snow <jsnow@redhat.com>
---
hw/block/fdc.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index e3b0e1e..36dd23b 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -180,6 +180,21 @@ typedef struct FDrive {
static FloppyDriveType get_fallback_drive_type(FDrive *drv);
+/* Hack: FD_SEEK is expected to work on empty drives. However, QEMU
+ * currently goes through some pains to keep seeks within the bounds
+ * established by last_sect and max_track. Correcting this is difficult,
+ * as refactoring FDC code tends to expose nasty bugs in the Linux kernel.
+ *
+ * For now: allow empty drives to have large bounds so we can seek around,
+ * with the understanding that when a diskette is inserted, the bounds will
+ * properly tighten to match the geometry of that inserted medium.
+ */
+static void fd_empty_seek_hack(FDrive *drv)
+{
+ drv->last_sect = 0xFF;
+ drv->max_track = 0xFF;
+}
+
static void fd_init(FDrive *drv)
{
/* Drive */
@@ -393,6 +408,7 @@ static void fd_revalidate(FDrive *drv)
if (!drv->media_inserted) {
FLOPPY_DPRINTF("No disk in drive\n");
drv->disk = FLOPPY_DRIVE_TYPE_NONE;
+ fd_empty_seek_hack(drv);
} else if (!drv->media_validated) {
rc = pick_geometry(drv);
if (rc) {
--
2.4.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH] fdc: fix detection under Linux
2016-01-29 22:35 [Qemu-devel] [PATCH] fdc: fix detection under Linux John Snow
@ 2016-01-30 0:15 ` Eric Blake
2016-02-01 21:02 ` Hervé Poussineau
1 sibling, 0 replies; 3+ messages in thread
From: Eric Blake @ 2016-01-30 0:15 UTC (permalink / raw)
To: John Snow, qemu-block; +Cc: pbonzini, hpoussin, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 733 bytes --]
On 01/29/2016 03:35 PM, John Snow wrote:
> Accidentally, I removed a "feature" where empty drives had geometry
> values applied to them, which allows seek on empty drives to work
> "by accident," as QEMU actually tries to disallow that.
>
> Seeks on empty drives should work, though, but the easiest thing is to
> restore the misfeature where empty drives have non-zero geometries
> applied.
>
> Document the hack accordingly.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> hw/block/fdc.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH] fdc: fix detection under Linux
2016-01-29 22:35 [Qemu-devel] [PATCH] fdc: fix detection under Linux John Snow
2016-01-30 0:15 ` Eric Blake
@ 2016-02-01 21:02 ` Hervé Poussineau
1 sibling, 0 replies; 3+ messages in thread
From: Hervé Poussineau @ 2016-02-01 21:02 UTC (permalink / raw)
To: John Snow, qemu-block; +Cc: pbonzini, qemu-devel
Le 29/01/2016 23:35, John Snow a écrit :
> Accidentally, I removed a "feature" where empty drives had geometry
> values applied to them, which allows seek on empty drives to work
> "by accident," as QEMU actually tries to disallow that.
>
> Seeks on empty drives should work, though, but the easiest thing is to
> restore the misfeature where empty drives have non-zero geometries
> applied.
>
> Document the hack accordingly.
>
> Signed-off-by: John Snow<jsnow@redhat.com>
> ---
> hw/block/fdc.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
Tested-by: Hervé Poussineau <hpoussin@reactos.org>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-02-01 21:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-29 22:35 [Qemu-devel] [PATCH] fdc: fix detection under Linux John Snow
2016-01-30 0:15 ` Eric Blake
2016-02-01 21:02 ` Hervé Poussineau
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.