|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging-4.17] x86/HVM: drop stdvga's "{g,s}r_index" struct members
commit f65f18ec68ff2acb4b3cef6b0b1917615f63a4bd
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Nov 12 14:08:44 2024 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Nov 12 14:08:44 2024 +0100
x86/HVM: drop stdvga's "{g,s}r_index" struct members
No consumers are left, hence the producer and the fields themselves can
also go away. stdvga_outb() is then useless, rendering stdvga_out()
useless as well. Hence the entire I/O port intercept can go away.
This is part of XSA-463 / CVE-2024-45818
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
(cherry picked from commit 86c03372e107f5c18266a62281663861b1144929)
---
xen/arch/x86/hvm/stdvga.c | 61 ---------------------------------------
xen/arch/x86/include/asm/hvm/io.h | 2 --
2 files changed, 63 deletions(-)
diff --git a/xen/arch/x86/hvm/stdvga.c b/xen/arch/x86/hvm/stdvga.c
index 818dba67d7..029328b4b1 100644
--- a/xen/arch/x86/hvm/stdvga.c
+++ b/xen/arch/x86/hvm/stdvga.c
@@ -38,62 +38,6 @@
#define VGA_MEM_BASE 0xa0000
#define VGA_MEM_SIZE 0x20000
-static int stdvga_outb(uint64_t addr, uint8_t val)
-{
- struct hvm_hw_stdvga *s = ¤t->domain->arch.hvm.stdvga;
- int rc = 1;
-
- switch ( addr )
- {
- case 0x3c4: /* sequencer address register */
- s->sr_index = val;
- break;
-
- case 0x3ce: /* graphics address register */
- s->gr_index = val;
- break;
-
- default:
- rc = 0;
- break;
- }
-
- return rc;
-}
-
-static void stdvga_out(uint32_t port, uint32_t bytes, uint32_t val)
-{
- switch ( bytes )
- {
- case 1:
- stdvga_outb(port, val);
- break;
-
- case 2:
- stdvga_outb(port + 0, val >> 0);
- stdvga_outb(port + 1, val >> 8);
- break;
-
- default:
- break;
- }
-}
-
-static int cf_check stdvga_intercept_pio(
- int dir, unsigned int port, unsigned int bytes, uint32_t *val)
-{
- struct hvm_hw_stdvga *s = ¤t->domain->arch.hvm.stdvga;
-
- if ( dir == IOREQ_WRITE )
- {
- spin_lock(&s->lock);
- stdvga_out(port, bytes, *val);
- spin_unlock(&s->lock);
- }
-
- return X86EMUL_UNHANDLEABLE; /* propagate to external ioemu */
-}
-
static int cf_check stdvga_mem_read(
const struct hvm_io_handler *handler, uint64_t addr, uint32_t size,
uint64_t *p_data)
@@ -195,11 +139,6 @@ void stdvga_init(struct domain *d)
{
struct hvm_io_handler *handler;
- /* Sequencer registers. */
- register_portio_handler(d, 0x3c4, 2, stdvga_intercept_pio);
- /* Graphics registers. */
- register_portio_handler(d, 0x3ce, 2, stdvga_intercept_pio);
-
/* VGA memory */
handler = hvm_next_io_handler(d);
diff --git a/xen/arch/x86/include/asm/hvm/io.h
b/xen/arch/x86/include/asm/hvm/io.h
index d17cf20fd4..03a437fb8b 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -122,8 +122,6 @@ struct vpci_arch_msix_entry {
};
struct hvm_hw_stdvga {
- uint8_t sr_index;
- uint8_t gr_index;
struct page_info *vram_page[64]; /* shadow of 0xa0000-0xaffff */
spinlock_t lock;
};
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.17
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |