qemu-block
[Top][All Lists]
Advanced

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

Re: [PATCH v2 2/5] hw/nvme: use symbolic names for registers


From: Klaus Jensen
Subject: Re: [PATCH v2 2/5] hw/nvme: use symbolic names for registers
Date: Wed, 14 Jul 2021 07:32:03 +0200

On Jul 14 00:21, Philippe Mathieu-Daudé wrote:
> On 7/14/21 12:12 AM, Philippe Mathieu-Daudé wrote:
> > On 7/13/21 9:24 PM, Klaus Jensen wrote:
> >> From: Klaus Jensen <k.jensen@samsung.com>
> >>
> >> Add the NvmeBarRegs enum and use these instead of explicit register
> >> offsets.
> >>
> >> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
> >> ---
> >>  include/block/nvme.h | 27 +++++++++++++++++++++++++++
> >>  hw/nvme/ctrl.c       | 44 ++++++++++++++++++++++----------------------
> >>  2 files changed, 49 insertions(+), 22 deletions(-)
> >>
> >> diff --git a/include/block/nvme.h b/include/block/nvme.h
> >> index 84053b68b987..082d4bddbf9f 100644
> >> --- a/include/block/nvme.h
> >> +++ b/include/block/nvme.h
> >> @@ -31,6 +31,33 @@ typedef struct QEMU_PACKED NvmeBar {
> >>      uint8_t     css[484];
> >>  } NvmeBar;
> >>  
> >> +enum NvmeBarRegs {
> >> +    NVME_REG_CAP     = 0x0,
> >> +    NVME_REG_VS      = 0x8,
> >> +    NVME_REG_INTMS   = 0xc,
> >> +    NVME_REG_INTMC   = 0x10,
> >> +    NVME_REG_CC      = 0x14,
> >> +    NVME_REG_CSTS    = 0x1c,
> >> +    NVME_REG_NSSR    = 0x20,
> >> +    NVME_REG_AQA     = 0x24,
> >> +    NVME_REG_ASQ     = 0x28,
> >> +    NVME_REG_ACQ     = 0x30,
> >> +    NVME_REG_CMBLOC  = 0x38,
> >> +    NVME_REG_CMBSZ   = 0x3c,
> >> +    NVME_REG_BPINFO  = 0x40,
> >> +    NVME_REG_BPRSEL  = 0x44,
> >> +    NVME_REG_BPMBL   = 0x48,
> >> +    NVME_REG_CMBMSC  = 0x50,
> >> +    NVME_REG_CMBSTS  = 0x58,
> >> +    NVME_REG_PMRCAP  = 0xe00,
> >> +    NVME_REG_PMRCTL  = 0xe04,
> >> +    NVME_REG_PMRSTS  = 0xe08,
> >> +    NVME_REG_PMREBS  = 0xe0c,
> >> +    NVME_REG_PMRSWTP = 0xe10,
> >> +    NVME_REG_PMRMSCL = 0xe14,
> >> +    NVME_REG_PMRMSCU = 0xe18,
> >> +};
> >> +
> >>  enum NvmeCapShift {
> >>      CAP_MQES_SHIFT     = 0,
> >>      CAP_CQR_SHIFT      = 16,
> >> diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
> >> index 28299c6f3764..8c305315f41c 100644
> >> --- a/hw/nvme/ctrl.c
> >> +++ b/hw/nvme/ctrl.c
> >> @@ -5740,7 +5740,7 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr 
> >> offset, uint64_t data,
> >>      }
> >>  
> >>      switch (offset) {
> >> -    case 0xc:   /* INTMS */
> >> +    case NVME_REG_INTMS:
> > 
> > What about using offsetof(NvmeBar, intms) instead?
> 
> BTW I'm not suggesting this is better, I just wonder how we can avoid
> to duplicate the definitions. Alternative is declaring:
> 
> enum NvmeBarRegs {
>     NVME_REG_CAP     = offsetof(NvmeBar, cap),
>     NVME_REG_VS      = offsetof(NvmeBar, vs),
>     ...
> 

I like this suggestion!

Attachment: signature.asc
Description: PGP signature


reply via email to

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