diff mbox series

[v8,2/8] block: Support providing LCHS from user

Message ID 20191016164145.115898-4-sameid@google.com
State New
Headers show
Series Add Qemu to SeaBIOS LCHS interface | expand

Commit Message

Sam Eiderman Oct. 16, 2019, 4:41 p.m. UTC
From: Sam Eiderman <shmuel.eiderman@oracle.com>

Add logical geometry variables to BlockConf.

A user can now supply "lcyls", "lheads" & "lsecs" for any HD device
that supports CHS ("cyls", "heads", "secs").

These devices include:
    * ide-hd
    * scsi-hd
    * virtio-blk-pci

In future commits we will use the provided LCHS and pass it to the BIOS
through fw_cfg to be supplied using INT13 routines.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
---
 include/hw/block/block.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé Oct. 22, 2019, 10:20 a.m. UTC | #1
On 10/16/19 6:41 PM, Sam Eiderman wrote:
> From: Sam Eiderman <shmuel.eiderman@oracle.com>
> 
> Add logical geometry variables to BlockConf.
> 
> A user can now supply "lcyls", "lheads" & "lsecs" for any HD device
> that supports CHS ("cyls", "heads", "secs").
> 
> These devices include:
>      * ide-hd
>      * scsi-hd
>      * virtio-blk-pci
> 
> In future commits we will use the provided LCHS and pass it to the BIOS
> through fw_cfg to be supplied using INT13 routines.
> 
> Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
> Signed-off-by: Sam Eiderman <sameid@google.com>

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---
>   include/hw/block/block.h | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/include/hw/block/block.h b/include/hw/block/block.h
> index fd55a30bca..d7246f3862 100644
> --- a/include/hw/block/block.h
> +++ b/include/hw/block/block.h
> @@ -26,6 +26,7 @@ typedef struct BlockConf {
>       uint32_t discard_granularity;
>       /* geometry, not all devices use this */
>       uint32_t cyls, heads, secs;
> +    uint32_t lcyls, lheads, lsecs;
>       OnOffAuto wce;
>       bool share_rw;
>       BlockdevOnError rerror;
> @@ -65,7 +66,10 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf)
>   #define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf)                      \
>       DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0),                  \
>       DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0),                \
> -    DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0)
> +    DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0),                  \
> +    DEFINE_PROP_UINT32("lcyls", _state, _conf.lcyls, 0),                \
> +    DEFINE_PROP_UINT32("lheads", _state, _conf.lheads, 0),              \
> +    DEFINE_PROP_UINT32("lsecs", _state, _conf.lsecs, 0)
>   
>   #define DEFINE_BLOCK_ERROR_PROPERTIES(_state, _conf)                    \
>       DEFINE_PROP_BLOCKDEV_ON_ERROR("rerror", _state, _conf.rerror,       \
>
diff mbox series

Patch

diff --git a/include/hw/block/block.h b/include/hw/block/block.h
index fd55a30bca..d7246f3862 100644
--- a/include/hw/block/block.h
+++ b/include/hw/block/block.h
@@ -26,6 +26,7 @@  typedef struct BlockConf {
     uint32_t discard_granularity;
     /* geometry, not all devices use this */
     uint32_t cyls, heads, secs;
+    uint32_t lcyls, lheads, lsecs;
     OnOffAuto wce;
     bool share_rw;
     BlockdevOnError rerror;
@@ -65,7 +66,10 @@  static inline unsigned int get_physical_block_exp(BlockConf *conf)
 #define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf)                      \
     DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0),                  \
     DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0),                \
-    DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0)
+    DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0),                  \
+    DEFINE_PROP_UINT32("lcyls", _state, _conf.lcyls, 0),                \
+    DEFINE_PROP_UINT32("lheads", _state, _conf.lheads, 0),              \
+    DEFINE_PROP_UINT32("lsecs", _state, _conf.lsecs, 0)
 
 #define DEFINE_BLOCK_ERROR_PROPERTIES(_state, _conf)                    \
     DEFINE_PROP_BLOCKDEV_ON_ERROR("rerror", _state, _conf.rerror,       \