|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH v2 04/26] xen: consolidate CONFIG_VM_EVENT
[Public]
> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Wednesday, September 10, 2025 10:57 PM
> To: Penny, Zheng <penny.zheng@xxxxxxx>; Tamas K Lengyel
> <tamas@xxxxxxxxxxxxx>
> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Andrew Cooper
> <andrew.cooper3@xxxxxxxxxx>; Roger Pau Monné <roger.pau@xxxxxxxxxx>;
> Alexandru Isaila <aisaila@xxxxxxxxxxxxxxx>; Petre Pircalabu
> <ppircalabu@xxxxxxxxxxxxxxx>; Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>;
> xen-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH v2 04/26] xen: consolidate CONFIG_VM_EVENT
>
> On 10.09.2025 09:38, Penny Zheng wrote:
>
> > --- a/xen/include/xen/vm_event.h
> > +++ b/xen/include/xen/vm_event.h
> > @@ -50,6 +50,7 @@ struct vm_event_domain
> > unsigned int last_vcpu_wake_up;
> > };
> >
> > +#ifdef CONFIG_VM_EVENT
> > /* Returns whether a ring has been set up */ bool
> > vm_event_check_ring(struct vm_event_domain *ved);
> >
> > @@ -68,6 +69,20 @@ bool vm_event_check_ring(struct vm_event_domain
> *ved);
> > */
> > int __vm_event_claim_slot(struct domain *d, struct vm_event_domain *ved,
> > bool allow_sleep);
> > +#else
> > +static inline bool vm_event_check_ring(struct vm_event_domain *ved) {
> > + return false;
> > +}
>
> Which call site is in need of this stub? I was first considering
> mem_paging_enabled(), but MEM_PAGING already now depends on VM_EVENT.
>
It is used in hvm.c to check whether vm_event_share ring is empty. And it has
the same problem as the below: whether we support the configuration: VM_EVENT=n
and MEM_SHARING=y. I'm not very familiar with it and may need help on it.
If the combination is not supported, I suggest to make MEM_SHARING depend on
VM_EVENT, most of the below stubs could be removed.
> > +static inline int __vm_event_claim_slot(struct domain *d,
> > + struct vm_event_domain *ved,
> > + bool allow_sleep) {
> > + return -EOPNOTSUPP;
> > +}
>
> Sadly this looks to be needed when MEM_SHARING=y and VM_EVENT=n.
>
> > @@ -82,23 +97,28 @@ static inline int
> > vm_event_claim_slot_nosleep(struct domain *d,
> >
> > void vm_event_cancel_slot(struct domain *d, struct vm_event_domain
> > *ved);
> >
> > +#ifdef CONFIG_VM_EVENT
> > void vm_event_put_request(struct domain *d, struct vm_event_domain *ved,
> > vm_event_request_t *req);
> >
> > -#ifdef CONFIG_VM_EVENT
> > /* Clean up on domain destruction */
> > void vm_event_cleanup(struct domain *d); int vm_event_domctl(struct
> > domain *d, struct xen_domctl_vm_event_op *vec);
> > +
> > +void vm_event_vcpu_pause(struct vcpu *v);
> > #else /* !CONFIG_VM_EVENT */
> > +static inline void vm_event_put_request(struct domain *d,
> > + struct vm_event_domain *ved,
> > + vm_event_request_t *req) {}
>
> Same here and ...
>
> > static inline void vm_event_cleanup(struct domain *d) {} static
> > inline int vm_event_domctl(struct domain *d,
> > struct xen_domctl_vm_event_op *vec)
> > {
> > return -EOPNOTSUPP;
> > }
> > +static inline void vm_event_vcpu_pause(struct vcpu *v) {};
>
> ... here.
>
> > #endif /* !CONFIG_VM_EVENT */
> >
> Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |