[v4,4/6] pflash_cfi01: memory region should be set to enable readonly mode

Submitted by jordan.l.justen@intel.com on May 7, 2013, 5:15 p.m.

Details

Message ID 1367946947-17109-5-git-send-email-jordan.l.justen@intel.com
State New
Headers show

Commit Message

jordan.l.justen@intel.com May 7, 2013, 5:15 p.m.
This causes any writes to the memory region to trap to the
device handler.

This is also important for KVM, because this allows the memory
region to be set using KVM_MEM_READONLY, which allows the memory
region to be read & executed. (Without this, KVM will not support
executing from the memory region.)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
---
 hw/block/pflash_cfi01.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

Paolo Bonzini May 7, 2013, 8:35 p.m.
Il 07/05/2013 19:15, Jordan Justen ha scritto:
> This causes any writes to the memory region to trap to the
> device handler.
> 
> This is also important for KVM, because this allows the memory
> region to be set using KVM_MEM_READONLY, which allows the memory
> region to be read & executed. (Without this, KVM will not support
> executing from the memory region.)
> 
> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
> ---
>  hw/block/pflash_cfi01.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c
> index 3ff20e0..b65225e 100644
> --- a/hw/block/pflash_cfi01.c
> +++ b/hw/block/pflash_cfi01.c
> @@ -596,6 +596,8 @@ static int pflash_cfi01_init(SysBusDevice *dev)
>          }
>      }
>  
> +    memory_region_set_readonly(&pfl->mem, true);
> +
>      if (pfl->bs) {
>          pfl->ro = bdrv_is_read_only(pfl->bs);
>      } else {
> 

NACK, romd mode already implies this.  See my review of patch 3.

Paolo

Patch hide | download patch | download mbox

diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c
index 3ff20e0..b65225e 100644
--- a/hw/block/pflash_cfi01.c
+++ b/hw/block/pflash_cfi01.c
@@ -596,6 +596,8 @@  static int pflash_cfi01_init(SysBusDevice *dev)
         }
     }
 
+    memory_region_set_readonly(&pfl->mem, true);
+
     if (pfl->bs) {
         pfl->ro = bdrv_is_read_only(pfl->bs);
     } else {