]> xenbits.xensource.com Git - xen.git/commit
x86/vtd: Don't include control register state in the table pointers
authorAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 3 May 2019 09:05:05 +0000 (11:05 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 3 May 2019 09:05:05 +0000 (11:05 +0200)
commitf0c5805b64767563abb558ff7e7640ced1114a0d
tree343de79b13af1a8cfbd44e01ece4012627769bbd
parent3f5490d7e442db3dc65d784ee3c087f7e41f5a06
x86/vtd: Don't include control register state in the table pointers

iremap_maddr and qinval_maddr point to the base of a block of contiguous RAM,
allocated by the driver, holding the Interrupt Remapping table, and the Queued
Invalidation ring.

Despite their name, they are actually the values of the hardware register,
including control metadata in the lower 12 bits.  While uses of these fields
do appear to correctly shift out the metadata, this is very subtle behaviour
and confusing to follow.

Nothing uses the metadata, so make the fields actually point at the base of
the relevant tables.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
master commit: a9a05aeee10a5a3763a41305a9f38112dd1fcc82
master date: 2019-03-12 13:57:13 +0000
xen/drivers/passthrough/vtd/intremap.c
xen/drivers/passthrough/vtd/qinval.c
xen/drivers/passthrough/vtd/utils.c