Page MenuHomeFreeBSD

Free up the IPI slot used by IPI_STOP_HARD.
ClosedPublic

Authored by neel on Feb 27 2015, 11:17 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Feb 19, 2:13 AM
Unknown Object (File)
Thu, Jan 25, 12:53 AM
Unknown Object (File)
Dec 22 2023, 10:13 PM
Unknown Object (File)
Nov 20 2023, 6:28 AM
Unknown Object (File)
Oct 11 2023, 1:41 AM
Unknown Object (File)
Sep 16 2023, 10:28 AM
Unknown Object (File)
Aug 29 2023, 6:15 AM
Unknown Object (File)
Aug 25 2023, 1:35 AM
Subscribers
None

Details

Summary

Change the numeric value of IPI_STOP_HARD so it doesn't occupy a valid IPI
slot. This can be done because IPI_STOP_HARD is actually delivered via NMI.

Test Plan

Enter debugger using 'sysctl debug.kdb.enter' which in turn uses IPI_STOP_HARD
to stop other cpus on amd64 and i386 systems.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

neel retitled this revision from to Free up the IPI slot used by IPI_STOP_HARD..
neel updated this object.
neel edited the test plan for this revision. (Show Details)
neel added reviewers: jhb, kib.
kib edited edge metadata.

Does IPI_STOP_HARD value must fit into 8 bits ? It is not the same as the spurious vector, which should be innocent as well, but slightly confusing.

This revision is now accepted and ready to land.Feb 28 2015, 2:55 AM
In D1983#3, @kostikbel wrote:

Does IPI_STOP_HARD value must fit into 8 bits ? It is not the same as the spurious vector, which should be innocent as well, but slightly confusing.

There were two restrictions when choosing the value for the IPI_STOP_HARD value:

  • 'native_lapic_ipi_vectored()' wants the vector to be less than 256
  • 'xen_ipis[]' requires the vector to be greater than or equal to 243 (APIC_IPI_INTS)
In D1983#6, @neel wrote:
In D1983#3, @kostikbel wrote:

Does IPI_STOP_HARD value must fit into 8 bits ? It is not the same as the spurious vector, which should be innocent as well, but slightly confusing.

There were two restrictions when choosing the value for the IPI_STOP_HARD value:

  • 'native_lapic_ipi_vectored()' wants the vector to be less than 256

So if we change the assertion in native_lapic_ipi_vectored(), the IPI_STOP_HARD value could be moved outside the [0,255] range ? I mean, explicitly allow a value in the valid range OR IPI_STOP_HARD, in the assertion.

I do not insist, as I already indicated, I am fine with the patch as is.

  • 'xen_ipis[]' requires the vector to be greater than or equal to 243 (APIC_IPI_INTS)
In D1983#7, @kostikbel wrote:
In D1983#6, @neel wrote:
In D1983#3, @kostikbel wrote:

Does IPI_STOP_HARD value must fit into 8 bits ? It is not the same as the spurious vector, which should be innocent as well, but slightly confusing.

There were two restrictions when choosing the value for the IPI_STOP_HARD value:

  • 'native_lapic_ipi_vectored()' wants the vector to be less than 256

So if we change the assertion in native_lapic_ipi_vectored(), the IPI_STOP_HARD value could be moved outside the [0,255] range ? I mean, explicitly allow a value in the valid range OR IPI_STOP_HARD, in the assertion.

Yup, that would have worked as well.

I do not insist, as I already indicated, I am fine with the patch as is.

  • 'xen_ipis[]' requires the vector to be greater than or equal to 243 (APIC_IPI_INTS)
neel updated this revision to Diff 4044.

Closed by commit rS279468 (authored by @neel).