[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [kvm-unit-tests PATCH v6 10/13] arm/arm64: ITS: INT functional tests
From: |
Auger Eric |
Subject: |
Re: [kvm-unit-tests PATCH v6 10/13] arm/arm64: ITS: INT functional tests |
Date: |
Fri, 13 Mar 2020 09:17:40 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 |
Hi Zenghui,
On 3/13/20 3:06 AM, Zenghui Yu wrote:
> On 2020/3/11 21:51, Eric Auger wrote:
>> +static void test_its_trigger(void)
>> +{
>> + struct its_collection *col3, *col2;
>> + struct its_device *dev2, *dev7;
>> +
>> + if (its_prerequisites(4))
>> + return;
>> +
>> + dev2 = its_create_device(2 /* dev id */, 8 /* nb_ites */);
>> + dev7 = its_create_device(7 /* dev id */, 8 /* nb_ites */);
>> +
>> + col3 = its_create_collection(3 /* col id */, 3/* target PE */);
>> + col2 = its_create_collection(2 /* col id */, 2/* target PE */);
>> +
>> + gicv3_lpi_set_config(8195, LPI_PROP_DEFAULT);
>> + gicv3_lpi_set_config(8196, LPI_PROP_DEFAULT);
>> +
>> + report_prefix_push("int");
>> + /*
>> + * dev=2, eventid=20 -> lpi= 8195, col=3
>> + * dev=7, eventid=255 -> lpi= 8196, col=2
>> + * Trigger dev2, eventid=20 and dev7, eventid=255
>> + * Check both LPIs hit
>> + */
>> +
>> + its_send_mapd(dev2, true);
>> + its_send_mapd(dev7, true);
>> +
>> + its_send_mapc(col3, true);
>> + its_send_mapc(col2, true);
>> +
>> + its_send_invall(col2);
>> + its_send_invall(col3);
>> +
>> + its_send_mapti(dev2, 8195 /* lpi id */, 20 /* event id */, col3);
>> + its_send_mapti(dev7, 8196 /* lpi id */, 255 /* event id */, col2);
>> +
>> + lpi_stats_expect(3, 8195);
>> + its_send_int(dev2, 20);
>> + check_lpi_stats("dev=2, eventid=20 -> lpi= 8195, col=3");
>> +
>> + lpi_stats_expect(2, 8196);
>> + its_send_int(dev7, 255);
>> + check_lpi_stats("dev=7, eventid=255 -> lpi= 8196, col=2");
>> +
>> + report_prefix_pop();
>> +
>> + report_prefix_push("inv/invall");
>> +
>> + /*
>> + * disable 8195, check dev2/eventid=20 does not trigger the
>> + * corresponding LPI
>> + */
>> + gicv3_lpi_set_config(8195, LPI_PROP_DEFAULT & ~LPI_PROP_ENABLED);
>> + its_send_inv(dev2, 20);
>> +
>> + lpi_stats_expect(-1, -1);
>> + its_send_int(dev2, 20);
>> + check_lpi_stats("dev2/eventid=20 does not trigger any LPI");
>> +
>> + /*
>> + * re-enable the LPI but willingly do not call invall
>> + * so the change in config is not taken into account.
>> + * The LPI should not hit
>> + */
>> + gicv3_lpi_set_config(8195, LPI_PROP_DEFAULT);
>> + lpi_stats_expect(-1, -1);
>> + its_send_int(dev2, 20);
>> + check_lpi_stats("dev2/eventid=20 still does not trigger any LPI");
>> +
>> + /* Now call the invall and check the LPI hits */
>> + its_send_invall(col3);
>> + lpi_stats_expect(3, 8195);
>> + its_send_int(dev2, 20);
>> + check_lpi_stats("dev2/eventid=20 now triggers an LPI");
>> +
>> + report_prefix_pop();
>> +
>> + report_prefix_push("mapd valid=false");
>> + /*
>> + * Unmap device 2 and check the eventid 20 formerly
>> + * attached to it does not hit anymore
>> + */
>> +
>> + its_send_mapd(dev2, false);
>> + lpi_stats_expect(-1, -1);
>> + its_send_int(dev2, 20);
>
> Here. You issued an INT command while the dev2 has just been unmapped,
> this will be detected by ITS as a command error. We may end-up failed
> to see the completion of this command (under the ITS stall mode).
I agree this is a case where it is expected to fail. However at the
moment we don't have stall kernel support and the way I test it fails is
by issuing the below
lpi_stats_expect(-1, -1);
check_lpi_stats("no LPI after device unmap");
Otherwise I cannot test this scenario.
I suggest once we get the stall support in kernel, we revisit the tests.
Thanks
Eric
>
>
> Thanks,
> Zenghui
>
>> + check_lpi_stats("no LPI after device unmap");
>> + report_prefix_pop();
>> +}
>
- [kvm-unit-tests PATCH v6 06/13] arm/arm64: ITS: Introspection tests, (continued)
- [kvm-unit-tests PATCH v6 06/13] arm/arm64: ITS: Introspection tests, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 08/13] arm/arm64: ITS: Device and collection Initialization, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 07/13] arm/arm64: ITS: its_enable_defaults, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 09/13] arm/arm64: ITS: Commands, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 10/13] arm/arm64: ITS: INT functional tests, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 11/13] arm/run: Allow Migration tests, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 12/13] arm/arm64: ITS: migration tests, Eric Auger, 2020/03/11
- [kvm-unit-tests PATCH v6 13/13] arm/arm64: ITS: pending table migration test, Eric Auger, 2020/03/11
- Re: [kvm-unit-tests PATCH v6 00/13] arm/arm64: Add ITS tests, Andrew Jones, 2020/03/11