[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 7/9] vpci/header: program p2m with guest BAR view
- To: Jan Beulich <jbeulich@xxxxxxxx>, Oleksandr Andrushchenko <andr2000@xxxxxxxxx>
- From: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@xxxxxxxx>
- Date: Thu, 9 Sep 2021 09:16:58 +0000
- Accept-language: en-US
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=chX/GOJFxoeWG/qEndEZOLb8ztbNtxyQ22IOr+l1lS4=; b=TQqqeGEMsSteV2ycJ0HDCxtby0sNBxFFV14eN/lpS7ngEJsrR/GQSmNF8qKmOba0BKMGv+2rp1c07XwHfajydXpjbCsAzIBGgc9VXbmxu4/Lmr4zRo1QR3Z53JOwvgTOMlPZwPj5PkoZReI6OjLYa0zrqS0c05/rk0v9SOoBLdDm4vGV7SCQze0DUk3ASmDOODQMdgWKgXxEJ/sw4gOkz49sU6h4YUxugxIitok21CpZSySXerLOxiRanfVZFkQZ3o3SXRcyJrOvX9/siwpE3xxLRzrUZw/54GemJogxJfB55jyyaNaPG5SZIpRTojKHHLIiikXUkOx8XE2XXC6Mfw==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aU5Te7fkqva71CCFT0t3QnPQmPSblMH9kO5g1Ni+Ed752q/w7Za82oRGnWn6QS6hblUIO9mtRU9c/rbr9Y2nGKjfdCto1DSaUMOaYT+o0cQZnIJOZwos0pRR/hplg6Q1EQoeVdsbPUoYEtxqTaxjwtXwFV6o/xJGpDZYRXYzE5ZKrvwWvpcMYycf7UiZqYg8/vAHAv9NLbRV2OsuMNQWOl5SXuiTJuQpcp+lPjdaEhg2eUhpCbMvyf0oqaRGv9YZSX7AK0IS02V5Ps5MorUUaHltTks6C+dv7VogVnmmUCtAzjJdj1S9tdxysS2A7s7jZXYWuXsQz9jknKcIzVoqLg==
- Authentication-results: suse.com; dkim=none (message not signed) header.d=none;suse.com; dmarc=none action=none header.from=epam.com;
- Cc: "julien@xxxxxxx" <julien@xxxxxxx>, "sstabellini@xxxxxxxxxx" <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <Oleksandr_Tyshchenko@xxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Artem Mygaiev <Artem_Mygaiev@xxxxxxxx>, "roger.pau@xxxxxxxxxx" <roger.pau@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Rahul Singh <rahul.singh@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- Delivery-date: Thu, 09 Sep 2021 09:17:13 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Thread-index: AQHXoKxowwaOW1OR4UKei+2TOBJan6uXHAEAgAQmJoCAACVpAIAADfgA
- Thread-topic: [PATCH 7/9] vpci/header: program p2m with guest BAR view
On 09.09.21 11:26, Jan Beulich wrote:
> On 09.09.2021 08:13, Oleksandr Andrushchenko wrote:
>> On 06.09.21 17:51, Jan Beulich wrote:
>>> On 03.09.2021 12:08, Oleksandr Andrushchenko wrote:
>>>> @@ -37,12 +41,28 @@ static int map_range(unsigned long s, unsigned long e,
>>>> void *data,
>>>> unsigned long *c)
>>>> {
>>>> const struct map_data *map = data;
>>>> + gfn_t start_gfn;
>>>> int rc;
>>>>
>>>> for ( ; ; )
>>>> {
>>>> unsigned long size = e - s + 1;
>>>>
>>>> + /*
>>>> + * Any BAR may have holes in its memory we want to map, e.g.
>>>> + * we don't want to map MSI regions which may be a part of that
>>>> BAR,
>>>> + * e.g. when a single BAR is used for both MMIO and MSI.
>>>> + * In this case MSI regions are subtracted from the mapping, but
>>>> + * map->start_gfn still points to the very beginning of the BAR.
>>>> + * So if there is a hole present then we need to adjust start_gfn
>>>> + * to reflect the fact of that substraction.
>>>> + */
>>>> + start_gfn = gfn_add(map->start_gfn, s - mfn_x(map->start_mfn));
>>> I may be missing something, but don't you need to adjust "size" then
>>> as well?
>> No, as range sets get consumed we have e and s updated accordingly,
>> so each time size represents the right value.
> It feels like something's wrong with the rangeset construction then:
> Either it represents _all_ holes (including degenerate ones at the
> start of end of a range), or none of them.
The resulting range set only has the MMIOs in it. While constructing the range
set
we cut off MSI-X out of it (make holes). But finally it only has the ranges
that we
need to map/unmap.
>
> Jan
>
Thank you,
Oleksandr
|