[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v7 5/6] xen/riscv: introduce an implementation of macros from <asm/bug.h>
- To: Oleksii <oleksii.kurochko@xxxxxxxxx>
- From: Jan Beulich <jbeulich@xxxxxxxx>
- Date: Tue, 8 Aug 2023 11:15:34 +0200
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VAsLA7s8Di76h+92NZz50JjD7JBHvWH9yNdvc7cCjz8=; b=dccA5Ypc4Ada+xCrFPSYF8h3VOwz7x5gcSL8y/9LGFR71b3Hz1OPPTXzzO0IXLsMazf282WE4NIa6RVlMio8q+uxkm17DrRC823IAnBvtqtlRY4AL2rs3kGLHUIuZCj1ck/PKPiYqmaWXViybMk/41P5Jm2OasLnuLn8GySJnscBWrBlwnkmWUIb4F9LK+HbL+RK84jui1ZJtgnyLylyPA3qcxY9tILi1PuBP7kvbP/EB5h+2fQXgCS6evzkMVYrMckOM1etN7WANlUgwfI9YyC0HkxHD1Fuafu7iB1DMvp/hdl1GxjJvS7K/CDhBnZBAvM0rQvPZyR4V9WuSznlrA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XFgj2Q5teOd/SEjVqTa3gxAE1iyQFUmIZi3D34sFbyiNgt09etjECYsidW2VG6iLqkWa1mM+Rd6bUeQLG9XEiEfNzztJ17x/8QrzOWV3K1DbjmFSnasXiUCAGUmlkP6xH087XsBgwlGKyr8wS/S1aIiyk0GOUB9o5xFEWKvlybZ/oW8hBfM8LFXP+GJSdDJeY6F7czw0JXXjuoDETB959kiMSN2iCFiR0N7gI3HrEUz/7plN5WfN/skaf1otvHO7LmowSWPpclQAbSaGeasvhVhAVoqdAOuG6YcSU1fcU/dFNyiMqMtzBlj4SubkIXSvuwz8k993G9YXRPetENCibw==
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Bob Eshleman <bobbyeshleman@xxxxxxxxx>, Alistair Francis <alistair.francis@xxxxxxx>, Connor Davis <connojdavis@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
- Delivery-date: Tue, 08 Aug 2023 09:15:43 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 08.08.2023 10:48, Oleksii wrote:
> On Mon, 2023-08-07 at 15:29 +0200, Jan Beulich wrote:
>> On 03.08.2023 14:05, Oleksii Kurochko wrote:
>>> +static uint32_t read_instr(unsigned long pc)
>>> +{
>>> + uint16_t instr16 = *(uint16_t *)pc;
>>> +
>>> + if ( GET_INSN_LENGTH(instr16) == 2 )
>>> + return (uint32_t)instr16;
>>
>> (I don't think this cast is needed.)
>>
>>> + else
>>> + return *(uint32_t *)pc;
>>> +}
>>
>> ... there still being a double read here, do you perhaps mean to
>> make a statement (that this code isn't safe to use on guest code)?
> I wonder if it'll be safe to read 16 bytes at a time then we won't have
> double read ( if you meant that first 16 bytes are read twice ):
>
> static uint32_t read_instr(unsigned long pc)
> {
> uint16_t instr16 = *(uint16_t *)pc;
>
> if ( GET_INSN_LENGTH(instr16) == 2 )
> return (uint32_t)instr16;
> else{
> // return *(uint32_t *)pc;
>
> uint16_t next_16 = *((uint16_t *)pc + 1);
> return ((uint32_t)instr16 << sizeof(instr16)) + next_16;
> }
> }
Whether this is safe for guest code depends further on what underlying
mappings there are. Surely you can't simply cast a guest add (coming
in as "unsigned long pc") to a hypervisor address. So as it stands the
function can only ever be used on Xen code anyway.
Jan
|