qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Anthony Liguori" <aliguori@amazon.com>
Subject: [Qemu-devel] [PULL 45/48] block: Handle "rechs" and "large" translation options
Date: Mon, 10 Feb 2014 19:37:02 +0100	[thread overview]
Message-ID: <1392057426-31990-46-git-send-email-afaerber@suse.de> (raw)
In-Reply-To: <1392057426-31990-1-git-send-email-afaerber@suse.de>

From: Paolo Bonzini <pbonzini@redhat.com>

Sure, CHS translation is an obscure topic, and legacy options for
hard-disk geometries are obscure as well.  But since QEMU does nothing
with it except telling the BIOS, and since there "large" and "rechs"
are listed in the enums, parsing them seems to be the bare minimum.

Acked-by: Stefan Hajnoczi <stefanha@gmail.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 blockdev.c                |  4 ++++
 hw/core/qdev-properties.c |  8 +++++---
 vl.c                      | 22 ++++++++++++++++------
 3 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/blockdev.c b/blockdev.c
index 36ceece..d71f815 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -776,6 +776,10 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
             translation = BIOS_ATA_TRANSLATION_NONE;
         } else if (!strcmp(value, "lba")) {
             translation = BIOS_ATA_TRANSLATION_LBA;
+        } else if (!strcmp(value, "large")) {
+            translation = BIOS_ATA_TRANSLATION_LARGE;
+        } else if (!strcmp(value, "rechs")) {
+            translation = BIOS_ATA_TRANSLATION_RECHS;
         } else if (!strcmp(value, "auto")) {
             translation = BIOS_ATA_TRANSLATION_AUTO;
         } else {
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 2c3a756..76a0c4d 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -469,9 +469,11 @@ PropertyInfo qdev_prop_losttickpolicy = {
 /* --- BIOS CHS translation */
 
 static const char *bios_chs_trans_table[] = {
-    [BIOS_ATA_TRANSLATION_AUTO] = "auto",
-    [BIOS_ATA_TRANSLATION_NONE] = "none",
-    [BIOS_ATA_TRANSLATION_LBA]  = "lba",
+    [BIOS_ATA_TRANSLATION_AUTO]  = "auto",
+    [BIOS_ATA_TRANSLATION_NONE]  = "none",
+    [BIOS_ATA_TRANSLATION_LBA]   = "lba",
+    [BIOS_ATA_TRANSLATION_LARGE] = "large",
+    [BIOS_ATA_TRANSLATION_RECHS] = "rechs",
 };
 
 PropertyInfo qdev_prop_bios_chs_trans = {
diff --git a/vl.c b/vl.c
index 0f7d31f..071372d 100644
--- a/vl.c
+++ b/vl.c
@@ -3073,14 +3073,19 @@ int main(int argc, char **argv, char **envp)
                         goto chs_fail;
                     if (*p == ',') {
                         p++;
-                        if (!strcmp(p, "none"))
+                        if (!strcmp(p, "large")) {
+                            translation = BIOS_ATA_TRANSLATION_LARGE;
+                        } else if (!strcmp(p, "rechs")) {
+                            translation = BIOS_ATA_TRANSLATION_RECHS;
+                        } else if (!strcmp(p, "none")) {
                             translation = BIOS_ATA_TRANSLATION_NONE;
-                        else if (!strcmp(p, "lba"))
+                        } else if (!strcmp(p, "lba")) {
                             translation = BIOS_ATA_TRANSLATION_LBA;
-                        else if (!strcmp(p, "auto"))
+                        } else if (!strcmp(p, "auto")) {
                             translation = BIOS_ATA_TRANSLATION_AUTO;
-                        else
+                        } else {
                             goto chs_fail;
+                        }
                     } else if (*p != '\0') {
                     chs_fail:
                         fprintf(stderr, "qemu: invalid physical CHS format\n");
@@ -3094,10 +3099,15 @@ int main(int argc, char **argv, char **envp)
                         qemu_opt_set(hda_opts, "heads", num);
                         snprintf(num, sizeof(num), "%d", secs);
                         qemu_opt_set(hda_opts, "secs", num);
-                        if (translation == BIOS_ATA_TRANSLATION_LBA)
+                        if (translation == BIOS_ATA_TRANSLATION_LARGE) {
+                            qemu_opt_set(hda_opts, "trans", "large");
+                        } else if (translation == BIOS_ATA_TRANSLATION_RECHS) {
+                            qemu_opt_set(hda_opts, "trans", "rechs");
+                        } else if (translation == BIOS_ATA_TRANSLATION_LBA) {
                             qemu_opt_set(hda_opts, "trans", "lba");
-                        if (translation == BIOS_ATA_TRANSLATION_NONE)
+                        } else if (translation == BIOS_ATA_TRANSLATION_NONE) {
                             qemu_opt_set(hda_opts, "trans", "none");
+                        }
                     }
                 }
                 break;
-- 
1.8.4.5

  parent reply	other threads:[~2014-02-10 18:37 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-10 18:36 [Qemu-devel] [PULL 00/48] QOM devices patch queue 2014-02-10 Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 01/48] qtest: don't report signals if qtest driver enabled Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 02/48] prep: Drop from ppcemb-softmmu Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 03/48] ppcemb-softmmu: Drop Mac and e500 emulation Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 04/48] target-ppc: Make ppc40x CPUs available in ppcemb Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 05/48] qom-test: Run for all available machines Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 06/48] qom-test: Test shutdown in addition to startup Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 07/48] tests: Run qom-test for every architecture Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 08/48] nand: Don't use qdev_create() in nand_init() Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 09/48] i2c: Rename i2c_bus to I2CBus Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 10/48] pxa2xx: QOM'ify I2C slave Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 11/48] tosa: QOM'ify DAC Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 12/48] z2: QOM'ify AER915 Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 13/48] wm8750: QOM'ify Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 14/48] ssd0303: QOM'ify Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 15/48] max7310: QOM'ify Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 16/48] lm832x: QOM'ify Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 17/48] ds1338: QOM'ify Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 18/48] twl92230: QOM'ify Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 19/48] i2c: Drop FROM_I2C_SLAVE() macro Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 20/48] tests: Add e1000 qtest Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 21/48] tests: Add vmxnet3 qtest Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 22/48] tests: Add rtl8139 qtest Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 23/48] tests: Add pcnet qtest Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 24/48] tests: Add eepro100 qtest Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 25/48] tests: Add ne2000 qtest Andreas Färber
2014-02-14 19:51   ` Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 26/48] tests: Add virtio-net qtest Andreas Färber
2014-02-14 20:00   ` Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 27/48] tests: Add tpci200 qtest Andreas Färber
2014-02-13 14:27   ` Alberto Garcia
2014-02-10 18:36 ` [Qemu-devel] [PULL 28/48] tests: Add ipoctal232 qtest Andreas Färber
2014-02-13 14:28   ` Alberto Garcia
2014-02-14 20:06   ` Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 29/48] ipack: Convert to QOM realize Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 30/48] ipack: QOM parent field cleanup for IPackBus Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 31/48] ipack: QOM parent field cleanup for IPackDevice Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 32/48] ipoctal232: QOM parent field cleanup Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 33/48] ipack: Move IndustryPack out of hw/char/ Andreas Färber
2014-02-14 20:13   ` Andreas Färber
2014-02-14 20:24     ` Paolo Bonzini
2014-02-10 18:36 ` [Qemu-devel] [PULL 34/48] qtest: Don't segfault with invalid -qtest option Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 35/48] qapi: Add size parser to StringInputVisitor Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 36/48] qdev: Sizes are now parsed by StringInputVisitor Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 37/48] qdev: Remove legacy parsers for hex8/32/64 Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 38/48] qdev: Legacy properties are now read-only Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 39/48] qdev: Legacy properties are just strings Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 40/48] qdev: Inline qdev_prop_parse() Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 41/48] qapi: Add human mode to StringOutputVisitor Andreas Färber
2014-02-10 18:36 ` [Qemu-devel] [PULL 42/48] qdev: Use human mode in "info qtree" Andreas Färber
2014-02-10 18:37 ` [Qemu-devel] [PULL 43/48] qdev: Remove most legacy printers Andreas Färber
2014-02-10 18:37 ` [Qemu-devel] [PULL 44/48] qdev: Remove hex8/32/64 property types Andreas Färber
2014-02-10 18:37 ` Andreas Färber [this message]
2014-02-10 18:37 ` [Qemu-devel] [PULL 46/48] qdev: Add enum property types to QAPI schema Andreas Färber
2014-02-10 18:37 ` [Qemu-devel] [PULL 47/48] qdev: Use QAPI type names for properties Andreas Färber
2014-02-10 18:37 ` [Qemu-devel] [PULL 48/48] qapi: Refine human printing of sizes Andreas Färber
2014-02-15 15:08 ` [Qemu-devel] [PULL 00/48] QOM devices patch queue 2014-02-10 Peter Maydell

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=1392057426-31990-46-git-send-email-afaerber@suse.de \
    --to=afaerber@suse.de \
    --cc=aliguori@amazon.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).