qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH v1 15/22] i386: sev: register RAM read/write


From: Brijesh Singh
Subject: Re: [Qemu-devel] [RFC PATCH v1 15/22] i386: sev: register RAM read/write ops for BIOS and PC.RAM region
Date: Wed, 14 Sep 2016 16:47:12 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0



On 09/14/2016 04:00 PM, Paolo Bonzini wrote:


On 14/09/2016 22:59, Brijesh Singh wrote:
I will look into hooking up the callback into ROM read/write ops. I was
thinking about adding a new argument in
cpu_physical_memory_write_rom_internal()

void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr,
                                   const uint8_t *buf, int len,
                                   WriteCB *cb)
{
   ....
   ptr = qemu_map_ram_ptr(mr->ram_block, addr1);

   if (cb)
     cb(ptr, buf, len)
   else
     memcpy(ptr, buf, len)
....

}

In case of SEV, we pass a CB function pointer which calls SEV API's to
encrypt memory. Does this make sense?

I think a global as you have it in this series is just fine---just don't
hook it into address_space_read and address_space_write.


Actually in SEV RAM callback I check the Attrs, if attr.sev_debug flag set then use SEV debug command otherwise default to memcpy so that DMA and everything else works. I guest the main reason why i choose to hook this up in address_space_read/write was that I found that address_space_write and address_space_read is used in debug path. e.g

cpu_memory_rw_debug
  address_space_rw
    address_space_write/read

cpu_physical_memory_rw
 address_space_rw
   address_space_write/read

How do you want me to handle these cases? Having SEV RAM callback taking care this internally was my simplest solution, I am certainly open to new ideas.



reply via email to

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