[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-ia64-devel] [PATCH]clean up ioports_{permit, deny}_access()
[IA64] clean up ioports_{permit, deny}_access() eliminate code duplication in those functions by introducing helper functions. Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> diff -r f27787b9f8d7 xen/arch/ia64/xen/mm.c --- a/xen/arch/ia64/xen/mm.c Fri Oct 17 17:40:15 2008 +0900 +++ b/xen/arch/ia64/xen/mm.c Fri Oct 17 18:04:57 2008 +0900 @@ -983,6 +983,32 @@ ASSIGN_writable | ASSIGN_pgc_allocated); } +static void +ioports_get_mmio_addr(const struct io_space *space, + unsigned long fp, unsigned long lp, + unsigned long *mmio_start, unsigned long *mmio_end) +{ + if (space->sparse) { + *mmio_start = IO_SPACE_SPARSE_ENCODING(fp) & PAGE_MASK; + *mmio_end = PAGE_ALIGN(IO_SPACE_SPARSE_ENCODING(lp)); + } else { + *mmio_start = fp & PAGE_MASK; + *mmio_end = PAGE_ALIGN(lp); + } +} + +static unsigned long +ioports_get_mmio_base(const struct io_space *space, struct domain *d) +{ + if (VMX_DOMAIN(d->vcpu[0])) + return LEGACY_IO_START; + + if (space == &io_space[0] && d != dom0) + return IO_PORTS_PADDR; + + return __pa(space->mmio_base); +} + /* * Inpurt * fgp: first guest port @@ -1025,13 +1051,7 @@ fmp = IO_SPACE_PORT(fmp); lmp = IO_SPACE_PORT(lmp); - if (space->sparse) { - mach_start = IO_SPACE_SPARSE_ENCODING(fmp) & PAGE_MASK; - mach_end = PAGE_ALIGN(IO_SPACE_SPARSE_ENCODING(lmp)); - } else { - mach_start = fmp & PAGE_MASK; - mach_end = PAGE_ALIGN(lmp); - } + ioports_get_mmio_addr(space, fmp, lmp, &mach_start, &mach_end); /* * The "machine first port" is not necessarily identity mapped @@ -1041,13 +1061,7 @@ mach_end = mach_end | __pa(space->mmio_base); mmio_start = IO_SPACE_SPARSE_ENCODING(fgp) & PAGE_MASK; - - if (VMX_DOMAIN(d->vcpu[0])) - mmio_start |= LEGACY_IO_START; - else if (space == &io_space[0]) - mmio_start |= IO_PORTS_PADDR; - else - mmio_start |= __pa(space->mmio_base); + mmio_start |= ioports_get_mmio_base(space, d); while (mach_start < mach_end) { (void)__assign_domain_page(d, mmio_start, mach_start, ASSIGN_nocache); @@ -1090,20 +1104,9 @@ fp_base = IO_SPACE_PORT(fp); lp_base = IO_SPACE_PORT(lp); - if (space->sparse) { - mmio_start = IO_SPACE_SPARSE_ENCODING(fp_base) & PAGE_MASK; - mmio_end = PAGE_ALIGN(IO_SPACE_SPARSE_ENCODING(lp_base)); - } else { - mmio_start = fp_base & PAGE_MASK; - mmio_end = PAGE_ALIGN(lp_base); - } + ioports_get_mmio_addr(space, fp_base, lp_base, &mmio_start, &mmio_end); - if (VMX_DOMAIN(d->vcpu[0])) - mmio_base = LEGACY_IO_START; - else if (space == &io_space[0] && d != dom0) - mmio_base = IO_PORTS_PADDR; - else - mmio_base = __pa(space->mmio_base); + mmio_base = ioports_get_mmio_base(space, d); for (; mmio_start < mmio_end; mmio_start += PAGE_SIZE) { unsigned int port, range; -- yamahata _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |