Message ID | 20241205-vuart-ns8250-v1-13-e9aa923127eb@ford.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Introduce NS8250 UART emulator | expand |
On 06.12.2024 05:41, Denis Mukhin via B4 Relay wrote: > console_input_domain() takes an RCU lock to protect domain structure. > That implies call to rcu_unlock_domain() after use. > > Rename console_input_domain() to rcu_lock_domain_console_owner() to > highlight the need of calling rcu_unlock_domain(). While I can see where you're coming from, ... > --- a/xen/drivers/char/console.c > +++ b/xen/drivers/char/console.c > @@ -477,7 +477,7 @@ static unsigned int __read_mostly console_rx = 0; > > #ifdef CONFIG_SBSA_VUART_CONSOLE > /* Make sure to rcu_unlock_domain after use */ > -struct domain *console_input_domain(void) > +struct domain *rcu_lock_domain_console_owner(void) > { > if ( console_rx == 0 ) > return NULL; ... the new name no longer expresses that a domain pointer is being returned (out of thin air). I'm uncertain this is an improvement. Jan
On Thu, Dec 05, 2024 at 08:41:43PM -0800, Denis Mukhin via B4 Relay wrote: > From: Denis Mukhin <dmukhin@ford.com> > > console_input_domain() takes an RCU lock to protect domain structure. > That implies call to rcu_unlock_domain() after use. > > Rename console_input_domain() to rcu_lock_domain_console_owner() to > highlight the need of calling rcu_unlock_domain(). > > Signed-off-by: Denis Mukhin <dmukhin@ford.com> > --- > xen/arch/arm/vpl011.c | 2 +- > xen/drivers/char/console.c | 2 +- > xen/include/xen/console.h | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c > index fe36fe2bd1529a4114884580ded6d6fa55a22f0e..4d682e98553303b4a12f5cd7e5e67ab096cd7cc2 100644 > --- a/xen/arch/arm/vpl011.c > +++ b/xen/arch/arm/vpl011.c > @@ -78,7 +78,7 @@ static void vpl011_write_data_xen(struct domain *d, uint8_t data) > unsigned long flags; > struct vpl011 *vpl011 = &d->arch.vpl011; > struct vpl011_xen_backend *intf = vpl011->backend.xen; > - struct domain *input = console_input_domain(); > + struct domain *input = rcu_lock_domain_console_owner(); May I suggest console_get_domain() and then introducing a console_put_domain() which is just a wrapper around rcu_unlock_domain()? Thanks, Roger.
diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c index fe36fe2bd1529a4114884580ded6d6fa55a22f0e..4d682e98553303b4a12f5cd7e5e67ab096cd7cc2 100644 --- a/xen/arch/arm/vpl011.c +++ b/xen/arch/arm/vpl011.c @@ -78,7 +78,7 @@ static void vpl011_write_data_xen(struct domain *d, uint8_t data) unsigned long flags; struct vpl011 *vpl011 = &d->arch.vpl011; struct vpl011_xen_backend *intf = vpl011->backend.xen; - struct domain *input = console_input_domain(); + struct domain *input = rcu_lock_domain_console_owner(); VPL011_LOCK(d, flags); diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 0af4b551801356f242f1770b3826608136d65653..01fcbd5581d11f8f4f2b23592255b5c744430a3e 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -477,7 +477,7 @@ static unsigned int __read_mostly console_rx = 0; #ifdef CONFIG_SBSA_VUART_CONSOLE /* Make sure to rcu_unlock_domain after use */ -struct domain *console_input_domain(void) +struct domain *rcu_lock_domain_console_owner(void) { if ( console_rx == 0 ) return NULL; diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h index 6dfbade3ece36352c74f1124305da945b210f2a7..0e211e44d9703c804e18f52c9743916f8d2a9d4e 100644 --- a/xen/include/xen/console.h +++ b/xen/include/xen/console.h @@ -31,7 +31,7 @@ void console_end_sync(void); void console_start_log_everything(void); void console_end_log_everything(void); -struct domain *console_input_domain(void); +struct domain *rcu_lock_domain_console_owner(void); /* * Steal output from the console. Returns +ve identifier, else -ve error.