|
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/readHow 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.
[Prev in Thread] | Current Thread | [Next in Thread] |