qemu-devel
[Top][All Lists]
Advanced

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

[Bug 1906295] [NEW] Implementation of exclusive monitor in ARM


From: JIANG Muhui
Subject: [Bug 1906295] [NEW] Implementation of exclusive monitor in ARM
Date: Mon, 30 Nov 2020 18:36:22 -0000

Public bug reported:

Hi

I refer to the implementation of exclusive monitor in ARM32. For
instruction like STREX Rx,Ry,[Rz], we need to check whether the address
[Rz] is in exclusive state. If not, we set the value Rx as 1 without
doing the store operation. However, I noticed that QEMU will not check
whether the address that Rz points to is a legal address or not. If the
value of Rz is 0x0 but it is not in exclusive state. QEMU will set Rx as
1 and continue to execute the following instructions.

However, physical devices will check the value of Rz. If Rz is an illegal 
address (e.g., 0x0), a SIGSEGV signal will be raised even the address is not in 
exclusive state. I searched many documentation about ARM and it seems that 
manual of ARM specification does not specify the implementation of exclusive 
monitor in detail. I am not sure which one is the right behavior. 
Should QEMU add this check? This might not be a mistake. However, should it be 
better if QEMU has the same behavior as a physical device? Feel free if you 
need a testcase. Many thanks

Regards
Muhui

** Affects: qemu
     Importance: Undecided
         Status: New

** Summary changed:

- Improper implementation of exclusive monitor in ARM
+ Implementation of exclusive monitor in ARM

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1906295

Title:
  Implementation of exclusive monitor in ARM

Status in QEMU:
  New

Bug description:
  Hi

  I refer to the implementation of exclusive monitor in ARM32. For
  instruction like STREX Rx,Ry,[Rz], we need to check whether the
  address [Rz] is in exclusive state. If not, we set the value Rx as 1
  without doing the store operation. However, I noticed that QEMU will
  not check whether the address that Rz points to is a legal address or
  not. If the value of Rz is 0x0 but it is not in exclusive state. QEMU
  will set Rx as 1 and continue to execute the following instructions.

  However, physical devices will check the value of Rz. If Rz is an illegal 
address (e.g., 0x0), a SIGSEGV signal will be raised even the address is not in 
exclusive state. I searched many documentation about ARM and it seems that 
manual of ARM specification does not specify the implementation of exclusive 
monitor in detail. I am not sure which one is the right behavior. 
  Should QEMU add this check? This might not be a mistake. However, should it 
be better if QEMU has the same behavior as a physical device? Feel free if you 
need a testcase. Many thanks

  Regards
  Muhui

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1906295/+subscriptions



reply via email to

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