| From eaa03d34535872d29004cb5cf77dc9dec1ba9a25 Mon Sep 17 00:00:00 2001 |
| From: "Andrea Parri (Microsoft)" <parri.andrea@gmail.com> |
| Date: Mon, 28 Mar 2022 17:44:57 +0200 |
| Subject: Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb() |
| |
| From: Andrea Parri (Microsoft) <parri.andrea@gmail.com> |
| |
| commit eaa03d34535872d29004cb5cf77dc9dec1ba9a25 upstream. |
| |
| Following the recommendation in Documentation/memory-barriers.txt for |
| virtual machine guests. |
| |
| Fixes: 8b6a877c060ed ("Drivers: hv: vmbus: Replace the per-CPU channel lists with a global array of channels") |
| Signed-off-by: Andrea Parri (Microsoft) <parri.andrea@gmail.com> |
| Link: https://lore.kernel.org/r/20220328154457.100872-1-parri.andrea@gmail.com |
| Signed-off-by: Wei Liu <wei.liu@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/hv/channel_mgmt.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/hv/channel_mgmt.c |
| +++ b/drivers/hv/channel_mgmt.c |
| @@ -380,7 +380,7 @@ void vmbus_channel_map_relid(struct vmbu |
| * execute: |
| * |
| * (a) In the "normal (i.e., not resuming from hibernation)" path, |
| - * the full barrier in smp_store_mb() guarantees that the store |
| + * the full barrier in virt_store_mb() guarantees that the store |
| * is propagated to all CPUs before the add_channel_work work |
| * is queued. In turn, add_channel_work is queued before the |
| * channel's ring buffer is allocated/initialized and the |
| @@ -392,14 +392,14 @@ void vmbus_channel_map_relid(struct vmbu |
| * recv_int_page before retrieving the channel pointer from the |
| * array of channels. |
| * |
| - * (b) In the "resuming from hibernation" path, the smp_store_mb() |
| + * (b) In the "resuming from hibernation" path, the virt_store_mb() |
| * guarantees that the store is propagated to all CPUs before |
| * the VMBus connection is marked as ready for the resume event |
| * (cf. check_ready_for_resume_event()). The interrupt handler |
| * of the VMBus driver and vmbus_chan_sched() can not run before |
| * vmbus_bus_resume() has completed execution (cf. resume_noirq). |
| */ |
| - smp_store_mb( |
| + virt_store_mb( |
| vmbus_connection.channels[channel->offermsg.child_relid], |
| channel); |
| } |