Patch series "Remove DISCONTIGMEM memory model", v3. SPARSEMEM memory model was supposed to entirely replace DISCONTIGMEM a (long) while ago. The last architectures that used DISCONTIGMEM were updated to use other memory models in v5.11 and it is about the time to entirely remove DISCONTIGMEM from the kernel. This set removes DISCONTIGMEM from alpha, arc and m68k, simplifies memory model selection in mm/Kconfig and replaces usage of redundant CONFIG_NEED_MULTIPLE_NODES and CONFIG_FLAT_NODE_MEM_MAP with CONFIG_NUMA and CONFIG_FLATMEM respectively. I've also removed NUMA support on alpha that was BROKEN for more than 15 years. There were also minor updates all over arch/ to remove mentions of DISCONTIGMEM in comments and #ifdefs. This patch (of 9): NUMA is marked broken on alpha for more than 15 years and DISCONTIGMEM was replaced with SPARSEMEM in v5.11. Remove both NUMA and DISCONTIGMEM support from alpha. Link: https://lkml.kernel.org/r/20210608091316.3622-1-rppt@kernel.org Link: https://lkml.kernel.org/r/20210608091316.3622-2-rppt@kernel.org Signed-off-by: Mike Rapoport <rppt@linux.ibm.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: David Hildenbrand <david@redhat.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Matt Turner <mattst88@gmail.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
138 lines
3.5 KiB
C
138 lines
3.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __ALPHA_MACHVEC_H
|
|
#define __ALPHA_MACHVEC_H 1
|
|
|
|
#include <linux/types.h>
|
|
|
|
/*
|
|
* This file gets pulled in by asm/io.h from user space. We don't
|
|
* want most of this escaping.
|
|
*/
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
/* The following structure vectors all of the I/O and IRQ manipulation
|
|
from the generic kernel to the hardware specific backend. */
|
|
|
|
struct task_struct;
|
|
struct mm_struct;
|
|
struct vm_area_struct;
|
|
struct linux_hose_info;
|
|
struct pci_dev;
|
|
struct pci_ops;
|
|
struct pci_controller;
|
|
struct _alpha_agp_info;
|
|
struct rtc_time;
|
|
|
|
struct alpha_machine_vector
|
|
{
|
|
/* This "belongs" down below with the rest of the runtime
|
|
variables, but it is convenient for entry.S if these
|
|
two slots are at the beginning of the struct. */
|
|
unsigned long hae_cache;
|
|
unsigned long *hae_register;
|
|
|
|
int nr_irqs;
|
|
int rtc_port;
|
|
int rtc_boot_cpu_only;
|
|
unsigned int max_asn;
|
|
unsigned long max_isa_dma_address;
|
|
unsigned long irq_probe_mask;
|
|
unsigned long iack_sc;
|
|
unsigned long min_io_address;
|
|
unsigned long min_mem_address;
|
|
unsigned long pci_dac_offset;
|
|
|
|
void (*mv_pci_tbi)(struct pci_controller *hose,
|
|
dma_addr_t start, dma_addr_t end);
|
|
|
|
unsigned int (*mv_ioread8)(const void __iomem *);
|
|
unsigned int (*mv_ioread16)(const void __iomem *);
|
|
unsigned int (*mv_ioread32)(const void __iomem *);
|
|
|
|
void (*mv_iowrite8)(u8, void __iomem *);
|
|
void (*mv_iowrite16)(u16, void __iomem *);
|
|
void (*mv_iowrite32)(u32, void __iomem *);
|
|
|
|
u8 (*mv_readb)(const volatile void __iomem *);
|
|
u16 (*mv_readw)(const volatile void __iomem *);
|
|
u32 (*mv_readl)(const volatile void __iomem *);
|
|
u64 (*mv_readq)(const volatile void __iomem *);
|
|
|
|
void (*mv_writeb)(u8, volatile void __iomem *);
|
|
void (*mv_writew)(u16, volatile void __iomem *);
|
|
void (*mv_writel)(u32, volatile void __iomem *);
|
|
void (*mv_writeq)(u64, volatile void __iomem *);
|
|
|
|
void __iomem *(*mv_ioportmap)(unsigned long);
|
|
void __iomem *(*mv_ioremap)(unsigned long, unsigned long);
|
|
void (*mv_iounmap)(volatile void __iomem *);
|
|
int (*mv_is_ioaddr)(unsigned long);
|
|
int (*mv_is_mmio)(const volatile void __iomem *);
|
|
|
|
void (*mv_switch_mm)(struct mm_struct *, struct mm_struct *,
|
|
struct task_struct *);
|
|
void (*mv_activate_mm)(struct mm_struct *, struct mm_struct *);
|
|
|
|
void (*mv_flush_tlb_current)(struct mm_struct *);
|
|
void (*mv_flush_tlb_current_page)(struct mm_struct * mm,
|
|
struct vm_area_struct *vma,
|
|
unsigned long addr);
|
|
|
|
void (*update_irq_hw)(unsigned long, unsigned long, int);
|
|
void (*ack_irq)(unsigned long);
|
|
void (*device_interrupt)(unsigned long vector);
|
|
void (*machine_check)(unsigned long vector, unsigned long la);
|
|
|
|
void (*smp_callin)(void);
|
|
void (*init_arch)(void);
|
|
void (*init_irq)(void);
|
|
void (*init_rtc)(void);
|
|
void (*init_pci)(void);
|
|
void (*kill_arch)(int);
|
|
|
|
u8 (*pci_swizzle)(struct pci_dev *, u8 *);
|
|
int (*pci_map_irq)(const struct pci_dev *, u8, u8);
|
|
struct pci_ops *pci_ops;
|
|
|
|
struct _alpha_agp_info *(*agp_info)(void);
|
|
|
|
const char *vector_name;
|
|
|
|
/* System specific parameters. */
|
|
union {
|
|
struct {
|
|
unsigned long gru_int_req_bits;
|
|
} cia;
|
|
|
|
struct {
|
|
unsigned long gamma_bias;
|
|
} t2;
|
|
|
|
struct {
|
|
unsigned int route_tab;
|
|
} sio;
|
|
} sys;
|
|
};
|
|
|
|
extern struct alpha_machine_vector alpha_mv;
|
|
|
|
#ifdef CONFIG_ALPHA_GENERIC
|
|
extern int alpha_using_srm;
|
|
extern int alpha_using_qemu;
|
|
#else
|
|
# ifdef CONFIG_ALPHA_SRM
|
|
# define alpha_using_srm 1
|
|
# else
|
|
# define alpha_using_srm 0
|
|
# endif
|
|
# ifdef CONFIG_ALPHA_QEMU
|
|
# define alpha_using_qemu 1
|
|
# else
|
|
# define alpha_using_qemu 0
|
|
# endif
|
|
#endif /* GENERIC */
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* __ALPHA_MACHVEC_H */
|