[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 4/9] fdc: handle read-only floppies (abort early
From: |
Hervé Poussineau |
Subject: |
[Qemu-devel] [PATCH v3 4/9] fdc: handle read-only floppies (abort early on write commands) |
Date: |
Mon, 23 Jan 2012 09:50:35 +0100 |
A real floppy doesn't attempt to write to read-only media either.
Signed-off-by: Hervé Poussineau <address@hidden>
---
hw/fdc.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/hw/fdc.c b/hw/fdc.c
index bedaeca..4a363bd 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -300,6 +300,7 @@ enum {
};
enum {
+ FD_SR1_NW = 0x02, /* Not writable */
FD_SR1_EC = 0x80, /* End of cylinder */
};
@@ -1179,6 +1180,16 @@ static int fdctrl_transfer_handler (void *opaque, int
nchan,
break;
case FD_DIR_WRITE:
/* WRITE commands */
+ if (cur_drv->ro) {
+ /* Handle readonly medium early, no need to do DMA, touch the
+ * LED or attempt any writes. A real floppy doesn't attempt
+ * to write to readonly media either. */
+ fdctrl_stop_transfer(fdctrl,
+ FD_SR0_ABNTERM | FD_SR0_SEEK, FD_SR1_NW,
+ 0x00);
+ goto transfer_error;
+ }
+
DMA_read_memory (nchan, fdctrl->fifo + rel_pos,
fdctrl->data_pos, len);
if (bdrv_write(cur_drv->bs, fd_sector(cur_drv),
--
1.7.7.3
- Re: [Qemu-devel] [PATCH v3 1/9] fdc: take side count into account, (continued)
[Qemu-devel] [PATCH v3 2/9] fdc: set busy bit when starting a command, Hervé Poussineau, 2012/01/23
[Qemu-devel] [PATCH v3 3/9] fdc: most control commands do not generate interrupts, Hervé Poussineau, 2012/01/23
[Qemu-devel] [PATCH v3 5/9] fdc: add CCR (Configuration Control Register) write register, Hervé Poussineau, 2012/01/23
[Qemu-devel] [PATCH v3 4/9] fdc: handle read-only floppies (abort early on write commands),
Hervé Poussineau <=
[Qemu-devel] [PATCH v3 7/9] fdc: check if media rate is correct before doing any transfer, Hervé Poussineau, 2012/01/23
[Qemu-devel] [PATCH v3 6/9] block: add a transfer rate for floppy types, Hervé Poussineau, 2012/01/23
[Qemu-devel] [PATCH v3 8/9] fdc: fix seek command, which shouldn't check tracks, Hervé Poussineau, 2012/01/23
[Qemu-devel] [PATCH v3 9/9] fdc: DIR (Digital Input Register) should return status of current drive..., Hervé Poussineau, 2012/01/23
Re: [Qemu-devel] [PATCH v3 0/9] Misc fixes for floppy emulation, Markus Armbruster, 2012/01/31