qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 3/8] nvdimm acpi: introduce _FIT


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH v2 3/8] nvdimm acpi: introduce _FIT
Date: Fri, 14 Oct 2016 13:59:19 +0200

On Fri, 14 Oct 2016 15:43:50 +0800
Xiao Guangrong <address@hidden> wrote:

> On 10/13/2016 09:33 PM, Igor Mammedov wrote:
> > On Wed, 12 Oct 2016 16:20:07 +0800
> > Xiao Guangrong <address@hidden> wrote:
> >  
> >> On 10/11/2016 07:49 PM, Igor Mammedov wrote:  
> >>> On Mon, 10 Oct 2016 21:09:30 +0800
> >>> Xiao Guangrong <address@hidden> wrote:
> >>>  
> >>>> On 10/10/2016 08:51 PM, Igor Mammedov wrote:  
> >>>>> On Sat, 8 Oct 2016 15:17:14 +0800
> >>>>> Xiao Guangrong <address@hidden> wrote:
> >>>>>  
> >>>>>> On 09/30/2016 09:14 PM, Igor Mammedov wrote:  
> >>>>>>> On Fri, 12 Aug 2016 14:54:05 +0800
> >>>>>>> Xiao Guangrong <address@hidden> wrote:
> >>>>>>>  
> >>>>>>>> _FIT is required for hotplug support, guest will inquire the updated
> >>>>>>>> device info from it if a hotplug event is received
> >>>>>>>>
> >>>>>>>> As FIT buffer is not completely mapped into guest address space, so a
> >>>>>>>> new function, Read FIT whose function index is 0xFFFFFFFF, is 
> >>>>>>>> reserved
> >>>>>>>> by QEMU to read the piece of FIT buffer. The buffer is concatenated
> >>>>>>>> before _FIT return  
> >>>>>>> Only issuer of UUID 2F10E7A4-9E91-11E4-89D3-123B93F75CBA can reserve
> >>>>>>> 0xFFFFFFFF for some purposes.
> >>>>>>> So spec should be amended first or custom generated UUID should be 
> >>>>>>> used.  
> >>>>>>
> >>>>>> Okay.
> >>>>>>
> >>>>>> I will change the changelog to reflect this fact and move the spec 
> >>>>>> update
> >>>>>> to this patch.  
> >>>>> under spec, I've meant ACPI spec where this UUID is declared  
> >>>>
> >>>> Er. ACPI spec just said that "0xFFFF is reserved", not sure it will be 
> >>>> used
> >>>> in the future.
> >>>>
> >>>> I'd prefer to custom-generated UUID, however, currently the UUID is 
> >>>> checked
> >>>> in OSPM, i.e, QEMU is not able to distinguish other UUIDs,  
> >>> I'd go with custom-generated UUID
> >>>  
> >>>> so how about
> >>>> drop the UUID check in ACPI and pass the UUID info to QEMU?  
> >>> It's a bit late to do so as it would be qemu-guest ABI change and
> >>> one would need to maintain old and new protocol.
> >>>  
> >>
> >> Okay.
> >>
> >> How about extract 16 bits from 'handle' filed in NvdimmDsmIn buffer and use
> >> it to indicate different UUIDs, i,e:
> >> struct NvdimmDsmIn {
> >>      uint16_t handle;
> >>      uint16_t uuid_type;
> >>      uint32_t revision;
> >>      uint32_t function;
> >>      /* the remaining size in the page is used by arg3. */
> >>      union {
> >>          uint8_t arg3[4084];
> >>      };
> >> } QEMU_PACKED;
> >> typedef struct NvdimmDsmIn NvdimmDsmIn;
> >>
> >> For this case, we set uuid_type = 1 to indicate the UUID is the one used
> >> for RFIT.
> >>
> >> u16 for 'handle' is large enough as QEMU supports 255 memory devices.  
> > I wouldn't do above as it needlessly complicates qemu<->OSPM
> > protocol.
> > Since handle is completely internal QEMU thing we can just reserve 
> > 0xFFFFFFFF value
> > in docs/specs/acpi_nvdimm.txt  for RFIT and keep UUID checks only on ASL 
> > side.
> >
> > and on QEMU side add check to guaranty that auto generated handle for DIMMs
> > would never go into reserved range.
> >  
> 
> Okay, I agree. As we may need to support multiple UUIDs in the future. I'd
> like to document the rule for handle reservation:
>    The handle is completely QEMU internal thing, the value in range [0, 
> 0xFFFF]
>    indicates nvdimm device (O means nvdimm root device named NVDR), the values
>    out of this region are reserved by other purpose.
> 
>    Current reserved handles:
>    0x10000 is reserved for RFIT.
sounds fine to me



reply via email to

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