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.
Details
Details
- Reviewers
kib jhb - Commits
- rS279468: Free up the IPI slot used by IPI_STOP_HARD.
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
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
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.
Comment Actions
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)
Comment Actions
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)
Comment Actions
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)