Displaying 19 results from an estimated 19 matches for "airq_areas_lock".
2019 May 13
3
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
(...)
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
Hm, where is airq_areas_lock defined? If it was introduced in one of
the previous patches, I have missed it.
> +static struct airq_info *new_airq_info(int index)
> {
> struct airq_info *info;
> int rc;
2019 May 13
3
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
(...)
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
Hm, where is airq_areas_lock defined? If it was introduced in one of
the previous patches, I have missed it.
> +static struct airq_info *new_airq_info(int index)
> {
> struct airq_info *info;
> int rc;
2019 Jul 23
3
[PATCH 1/1] virtio/s390: fix race on airq_areas
...virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c
index 1a55e5942d36..d97742662755 100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -145,6 +145,8 @@ struct airq_info {
struct airq_iv *aiv;
};
static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
+DEFINE_MUTEX(airq_areas_lock);
+
static u8 *summary_indicators;
static inline u8 *get_summary_indicator(struct airq_info *info)
@@ -265,9 +267,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
unsigned long bit, flags;
for (i = 0; i < MAX_AIRQ_AREAS && !indicator_addr; i++) {...
2019 Jul 23
3
[PATCH 1/1] virtio/s390: fix race on airq_areas
...virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c
index 1a55e5942d36..d97742662755 100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -145,6 +145,8 @@ struct airq_info {
struct airq_iv *aiv;
};
static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
+DEFINE_MUTEX(airq_areas_lock);
+
static u8 *summary_indicators;
static inline u8 *get_summary_indicator(struct airq_info *info)
@@ -265,9 +267,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
unsigned long bit, flags;
for (i = 0; i < MAX_AIRQ_AREAS && !indicator_addr; i++) {...
2019 Jul 24
2
[PATCH 1/1] virtio/s390: fix race on airq_areas
...7742662755 100644
> > --- a/drivers/s390/virtio/virtio_ccw.c
> > +++ b/drivers/s390/virtio/virtio_ccw.c
> > @@ -145,6 +145,8 @@ struct airq_info {
> > struct airq_iv *aiv;
> > };
> > static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
> > +DEFINE_MUTEX(airq_areas_lock);
> > +
> > static u8 *summary_indicators;
> >
> > static inline u8 *get_summary_indicator(struct airq_info *info)
> > @@ -265,9 +267,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
> > unsigned long bit, flags;
> >...
2019 Jul 24
2
[PATCH 1/1] virtio/s390: fix race on airq_areas
...7742662755 100644
> > --- a/drivers/s390/virtio/virtio_ccw.c
> > +++ b/drivers/s390/virtio/virtio_ccw.c
> > @@ -145,6 +145,8 @@ struct airq_info {
> > struct airq_iv *aiv;
> > };
> > static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
> > +DEFINE_MUTEX(airq_areas_lock);
> > +
> > static u8 *summary_indicators;
> >
> > static inline u8 *get_summary_indicator(struct airq_info *info)
> > @@ -265,9 +267,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
> > unsigned long bit, flags;
> >...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...void virtio_airq_handler(struct airq_struct *airq)
> >> read_unlock(&info->lock);
> >> }
> >>
> >> -static struct airq_info *new_airq_info(void)
> >> +/* call with drivers/s390/virtio/virtio_ccw.cheld */
> >
> > Hm, where is airq_areas_lock defined? If it was introduced in one of
> > the previous patches, I have missed it.
>
> There is no airq_areas_lock defined currently. My assumption is that
> this will be used in context with the likely race condition this
> part of the patch is talking about.
>
> @@ -2...
2019 Jul 24
0
[PATCH 1/1] virtio/s390: fix race on airq_areas
...o_ccw.c
> index 1a55e5942d36..d97742662755 100644
> --- a/drivers/s390/virtio/virtio_ccw.c
> +++ b/drivers/s390/virtio/virtio_ccw.c
> @@ -145,6 +145,8 @@ struct airq_info {
> struct airq_iv *aiv;
> };
> static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
> +DEFINE_MUTEX(airq_areas_lock);
> +
> static u8 *summary_indicators;
>
> static inline u8 *get_summary_indicator(struct airq_info *info)
> @@ -265,9 +267,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
> unsigned long bit, flags;
>
> for (i = 0; i < MAX_AIRQ_...
2019 Sep 03
0
[PATCH AUTOSEL 5.2 18/23] virtio/s390: fix race on airq_areas
...w.c b/drivers/s390/virtio/virtio_ccw.c
index 6a30768813219..8d47ad61bac3d 100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -132,6 +132,7 @@ struct airq_info {
struct airq_iv *aiv;
};
static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
+static DEFINE_MUTEX(airq_areas_lock);
#define CCW_CMD_SET_VQ 0x13
#define CCW_CMD_VDEV_RESET 0x33
@@ -244,9 +245,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
unsigned long bit, flags;
for (i = 0; i < MAX_AIRQ_AREAS && !indicator_addr; i++) {
+ mutex_lock(&airq_areas_lock);...
2019 Sep 03
0
[PATCH AUTOSEL 4.19 162/167] virtio/s390: fix race on airq_areas
...w.c b/drivers/s390/virtio/virtio_ccw.c
index ec54538f7ae1c..67efdf25657f3 100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -132,6 +132,7 @@ struct airq_info {
struct airq_iv *aiv;
};
static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
+static DEFINE_MUTEX(airq_areas_lock);
#define CCW_CMD_SET_VQ 0x13
#define CCW_CMD_VDEV_RESET 0x33
@@ -244,9 +245,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
unsigned long bit, flags;
for (i = 0; i < MAX_AIRQ_AREAS && !indicator_addr; i++) {
+ mutex_lock(&airq_areas_lock);...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...>> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
>> read_unlock(&info->lock);
>> }
>>
>> -static struct airq_info *new_airq_info(void)
>> +/* call with drivers/s390/virtio/virtio_ccw.cheld */
>
> Hm, where is airq_areas_lock defined? If it was introduced in one of
> the previous patches, I have missed it.
There is no airq_areas_lock defined currently. My assumption is that
this will be used in context with the likely race condition this
part of the patch is talking about.
@@ -273,8 +281,9 @@ static unsigned long g...
2019 Jul 24
0
[PATCH 1/1] virtio/s390: fix race on airq_areas
...;>> --- a/drivers/s390/virtio/virtio_ccw.c
>>> +++ b/drivers/s390/virtio/virtio_ccw.c
>>> @@ -145,6 +145,8 @@ struct airq_info {
>>> struct airq_iv *aiv;
>>> };
>>> static struct airq_info *airq_areas[MAX_AIRQ_AREAS];
>>> +DEFINE_MUTEX(airq_areas_lock);
>>> +
>>> static u8 *summary_indicators;
>>>
>>> static inline u8 *get_summary_indicator(struct airq_info *info)
>>> @@ -265,9 +267,11 @@ static unsigned long get_airq_indicator(struct virtqueue *vqs[], int nvqs,
>>> unsigned long bit, f...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
On Wed, 15 May 2019 15:43:23 +0200
Michael Mueller <mimu at linux.ibm.com> wrote:
> > Hm, where is airq_areas_lock defined? If it was introduced in one of
> > the previous patches, I have missed it.
>
> There is no airq_areas_lock defined currently. My assumption is that
> this will be used in context with the likely race condition this
> part of the patch is talking about.
Right! I first...
2019 May 08
2
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...Walk through indicators field, summary indicator not active. */
> for (ai = 0;;) {
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
> +static struct airq_info *new_airq_info(int index)
> {
> struct airq_info *info;
> int rc;
> @@ -252,7 +259,8 @@ static struct airq_info *new_airq_info(void)
> return NULL;
> }
> info->airq.handler = virtio_airq_handler;
> - info->airq.ls...
2019 May 08
2
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...Walk through indicators field, summary indicator not active. */
> for (ai = 0;;) {
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
> +static struct airq_info *new_airq_info(int index)
> {
> struct airq_info *info;
> int rc;
> @@ -252,7 +259,8 @@ static struct airq_info *new_airq_info(void)
> return NULL;
> }
> info->airq.handler = virtio_airq_handler;
> - info->airq.ls...
2019 Apr 26
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...ndicator(info)) = 0;
smp_wmb();
/* Walk through indicators field, summary indicator not active. */
for (ai = 0;;) {
@@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
read_unlock(&info->lock);
}
-static struct airq_info *new_airq_info(void)
+/* call with airq_areas_lock held */
+static struct airq_info *new_airq_info(int index)
{
struct airq_info *info;
int rc;
@@ -252,7 +259,8 @@ static struct airq_info *new_airq_info(void)
return NULL;
}
info->airq.handler = virtio_airq_handler;
- info->airq.lsi_ptr = &info->summary_indicator;
+ info->...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...ummary indicator not active. */
>> ????? for (ai = 0;;) {
>> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct
>> *airq)
>> ????? read_unlock(&info->lock);
>> ? }
>> -static struct airq_info *new_airq_info(void)
>> +/* call with airq_areas_lock held */
>> +static struct airq_info *new_airq_info(int index)
>> ? {
>> ????? struct airq_info *info;
>> ????? int rc;
>> @@ -252,7 +259,8 @@ static struct airq_info *new_airq_info(void)
>> ????????? return NULL;
>> ????? }
>> ????? info->airq.hand...
2019 Apr 26
33
[PATCH 00/10] s390: virtio: support protected virtualization
Enhanced virtualization protection technology may require the use of
bounce buffers for I/O. While support for this was built into the virtio
core, virtio-ccw wasn't changed accordingly.
Some background on technology (not part of this series) and the
terminology used.
* Protected Virtualization (PV):
Protected Virtualization guarantees, that non-shared memory of a guest
that operates in PV
2019 Apr 26
33
[PATCH 00/10] s390: virtio: support protected virtualization
Enhanced virtualization protection technology may require the use of
bounce buffers for I/O. While support for this was built into the virtio
core, virtio-ccw wasn't changed accordingly.
Some background on technology (not part of this series) and the
terminology used.
* Protected Virtualization (PV):
Protected Virtualization guarantees, that non-shared memory of a guest
that operates in PV