qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Bug 1818367] [NEW] Initialization of device cfi.pflash


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [Bug 1818367] [NEW] Initialization of device cfi.pflash01 failed: Block node is read-only
Date: Sat, 2 Mar 2019 23:05:12 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

Hi José,

On 3/2/19 10:35 PM, José Pekkarinen wrote:
> Public bug reported:
> 
> Hi,
> 
> I have several vms defined in libvirt using ovmf for uefi, since a later
> update of my server I'm unable to start any of the domains defined. This is

This looks more like a libvirt issue than a QEMU one.

> an example of the output given:
> 
> # virsh start os-1
> error: Failed to start domain os-1
> error: internal error: qemu unexpectedly closed the monitor: 
> 2019-03-02T21:23:51.726446Z qemu-system-x86_64: Initialization of device 
> cfi.pflash01 failed: Block node is read-only
> 
> an example of domain is like this:
> 
> <domain type='kvm'>                                                           
>                                                                               
>                                                                               
>                                      
>   <name>os-1</name>                                                           
>                                                                               
>                                                                               
>                                      
>   <uuid>34c41008-ab91-483b-959c-81a7a12ae9be</uuid>                           
>                                                                               
>                                                                               
>                                      
>   <memory unit='KiB'>8388608</memory>                                         
>                                                                               
>                                                                               
>                                      
>   <currentMemory unit='KiB'>8388608</currentMemory>                           
>                                                                               
>                                                                               
>                                      
>   <memoryBacking>                                                             
>                                                                               
>                                                                               
>                                      
>     <hugepages/>                                                              
>                                                                               
>                                                                               
>                                      
>   </memoryBacking>                                                            
>                                                                               
>                                                                               
>                                      
>   <vcpu placement='static' cpuset='10-11,34-35'>4</vcpu>                      
>                                                                               
>                                                                               
>                                      
>   <os>                                                                        
>                                                                               
>                                                                               
>                                      
>     <type arch='x86_64' machine='pc-i440fx-2.12'>hvm</type>                   
>                                                                               
>                                                                               
>                                      
>     <loader type='pflash'>/var/lib/libvirt/qemu/nvram/os-1-ovmf.fd</loader>   
>                                                                               
>                                                                               
>                                      

This is the copy of your OVMF_VARS pflash, I can't find where this file
load the OVMF_CODE pflash.

>     <boot dev='network'/>                                                     
>                                                                               
>                                                                               
>                                      
>     <boot dev='hd'/>                                                          
>                                                                               
>                                                                               
>                                      
>   </os>                                                                       
>                                                                               
>                                                                               
>                                      
>   <features>                                                                  
>                                                                               
>                                                                               
>                                      
>     <acpi/>                                                                   
>                                                                               
>                                                                               
>                                      
>     <apic/>                                                                   
>                                                                               
>                                                                               
>                                      
>   </features>                                                                 
>                                                                               
>                                                                               
>                                      
>   <cpu mode='host-passthrough' check='partial'/>                              
>                                                                               
>                                                                               
>                                      
>   <clock offset='utc'>                                                        
>                                                                               
>                                                                               
>                                      
>     <timer name='rtc' tickpolicy='catchup'/>                                  
>                                                                               
>                                                                               
>                                      
>     <timer name='pit' tickpolicy='delay'/>                                    
>                                                                               
>                                                                               
>                                      
>     <timer name='hpet' present='no'/>                                         
>                                                                               
>                                                                               
>                                      
>   </clock>                                                                    
>                                                                               
>                                                                               
>                                      
>   <on_poweroff>destroy</on_poweroff>                                          
>                                                                               
>                                                                               
>                                      
>   <on_reboot>restart</on_reboot>                                              
>                                                                               
>                                                                               
>                                      
>   <on_crash>destroy</on_crash>                                                
>                                                                               
>                                                                               
>                                      
>   <pm>                                                                        
>                                                                               
>                                                                               
>                                      
>     <suspend-to-mem enabled='no'/>                                            
>                                                                               
>                                                                               
>                                      
>     <suspend-to-disk enabled='no'/>                                           
>                                                                               
>                                                                               
>                                      
>   </pm>                                                                       
>                                                                               
>                                                                               
>                                      
>   <devices>                                                                   
>                                                                               
>                                                                               
>                                      
>     <emulator>/usr/bin/qemu-system-x86_64</emulator>                          
>                                                                               
>                                                                               
>                                      
>     <disk type='block' device='disk'>                                         
>                                                                               
>                                                                               
>                                      
>       <driver name='qemu' type='raw' cache='none' io='native'/>               
>                                                                               
>                                                                               
>                                      
>       <source dev='/dev/vg0/os-1-vda'/>                                       
>                                                                               
>                                                                               
>                                 
>       <target dev='vda' bus='virtio'/>                                        
>                                                                               
>                                                                               
>                                      
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' 
> function='0x0'/>                                                              
>                                                                               
>                                                   
>     </disk>                                                                   
>                                                                               
>                                                                               
>                                      
>     <disk type='block' device='disk'>
>       <driver name='qemu' type='raw' cache='none' io='native'/>
>       <source dev='/dev/vg0/os-1-vdb'/>
>       <target dev='vdb' bus='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x07' 
> function='0x0'/>
>     </disk>
>     <controller type='usb' index='0' model='ich9-ehci1'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
> function='0x7'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci1'>
>       <master startport='0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
> function='0x0' multifunction='on'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci2'>
>       <master startport='2'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
> function='0x1'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci3'>
>       <master startport='4'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
> function='0x2'/>
>     </controller>
>     <controller type='pci' index='0' model='pci-root'/>
>     <controller type='ide' index='0'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
> function='0x1'/>
>     </controller>
>     <interface type='bridge'>
>       <mac address='52:54:00:78:cb:97'/>
>       <source bridge='virbr0'/>
>       <model type='rtl8139'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' 
> function='0x0'/>
>     </interface>
>     <interface type='bridge'>
>       <mac address='52:54:00:1c:4f:22'/>
>       <source bridge='virbr1'/>
>       <model type='rtl8139'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
> function='0x0'/>
>     </interface>
>     <serial type='pty'>
>       <target type='isa-serial' port='0'>
>         <model name='isa-serial'/>
>       </target>
>     </serial>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <input type='mouse' bus='ps2'/>
>     <input type='keyboard' bus='ps2'/>
>     <graphics type='vnc' port='-1' autoport='yes'>
>       <listen type='address'/>
>     </graphics>
>     <video>
>       <model type='cirrus' vram='16384' heads='1' primary='yes'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
> function='0x0'/>
>     </video>
>     <memballoon model='virtio'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x09' 
> function='0x0'/>
>     </memballoon>
>   </devices>
> </domain>
> 
> where /var/lib/libvirt/qemu/nvram/os-1-ovmf.fd is a copy of
> /usr/share/edk2-ovmf/OVMF_VARS.fd. An the extract from my

Is the os-1-ovmf.fd file accessible by your libvirt/qemu user?

> /etc/libvirt/qemu.conf to define ovmf:
> 
> ...
> # Location of master nvram file                                               
>                                                                               
>                                                                               
>                                      
> #                                                                             
>                                                                               
>                                                                               
>                                      
> # When a domain is configured to use UEFI instead of standard                 
>                                                                               
>                                                                               
>                                      
> # BIOS it may use a separate storage for UEFI variables. If                   
>                                                                               
>                                                                               
>                                      
> # that's the case libvirt creates the variable store per domain               
>                                                                               
>                                                                               
>                                      
> # using this master file as image. Each UEFI firmware can,                    
>                                                                               
>                                                                               
>                                      
> # however, have different variables store. Therefore the nvram is             
>                                                                               
>                                                                               
>                                      
> # a list of strings when a single item is in form of:                         
>                                                                               
>                                                                               
>                                      
> #   ${PATH_TO_UEFI_FW}:${PATH_TO_UEFI_VARS}.                                  
>                                                                               
>                                                                               
>                                      
> # Later, when libvirt creates per domain variable store, this list is         
>                                                                               
>                                                                               
>                                      
> # searched for the master image. The UEFI firmware can be called              
>                                                                               
>                                                                               
>                                      
> # differently for different guest architectures. For instance, it's OVMF      
>                                                                               
>                                                                               
>                                      
> # for x86_64 and i686, but it's AAVMF for aarch64. The libvirt default        
>                                                                               
>                                                                               
>                                      
> # follows this scheme.                                                        
>                                                                               
>                                                                               
>                                      
> nvram = [                                                                     
>                                                                               
>                                                                               
>                                      
>    "/usr/share/edk2-ovmf/OVMF_CODE.fd:/usr/share/edk2-ovmf/OVMF_VARS.fd",     
>                                                                               
>                                                                               
>                                      
> ]
> ...
> 
> This setup used to work one month ago, now it's setup with:
> 
> QEMU emulator version 3.1.0
> libvirt-5.0.0
> linux-4.19.20

What is your OS distribution?

> 
> Any help appreciated.
> 
> Best regards.
> 
> José
> 
> ** Affects: qemu
>      Importance: Undecided
>          Status: New
> 

Regards,

Phil.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]