Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 572775 Details for
Bug 804347
Crash early in xen dom0 boot with 3.2.10-3 kernel
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
x86/apic_ops: Replace apic_ops with x86_apic_ops
0002-x86-apic_ops-Replace-apic_ops-with-x86_apic_ops.patch (text/plain), 8.26 KB, created by
Konrad Rzeszutek Wilk
on 2012-03-26 14:57:25 UTC
(
hide
)
Description:
x86/apic_ops: Replace apic_ops with x86_apic_ops
Filename:
MIME Type:
Creator:
Konrad Rzeszutek Wilk
Created:
2012-03-26 14:57:25 UTC
Size:
8.26 KB
patch
obsolete
>From 12bc4eb0dc90ee75156c6f6cd5b534620892628b Mon Sep 17 00:00:00 2001 >From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> >Date: Tue, 20 Mar 2012 18:54:02 -0400 >Subject: [PATCH 2/3] x86/apic_ops: Replace apic_ops with x86_apic_ops. > >.. which makes the code fit within the rest of the x86_ops functions. > >Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> >[v1: Changed x86_apic -> x86_ioapic per Yinghai Lu <yinghai@kernel.org> suggestion] >Acked-by: Suresh Siddha <suresh.b.siddha@intel.com> >--- > arch/x86/include/asm/io_apic.h | 40 +++++++++++++++++++++-------- > arch/x86/include/asm/x86_init.h | 8 ++++++ > arch/x86/kernel/apic/io_apic.c | 54 ++++---------------------------------- > arch/x86/kernel/setup.c | 2 +- > arch/x86/kernel/x86_init.c | 8 ++++++ > 5 files changed, 52 insertions(+), 60 deletions(-) > >diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h >index 190d8c2..ba1b11a 100644 >--- a/arch/x86/include/asm/io_apic.h >+++ b/arch/x86/include/asm/io_apic.h >@@ -5,6 +5,7 @@ > #include <asm/mpspec.h> > #include <asm/apicdef.h> > #include <asm/irq_vectors.h> >+#include <asm/x86_init.h> > > /* > * Intel IO-APIC support for SMP and UP systems. >@@ -21,15 +22,6 @@ > #define IO_APIC_REDIR_LEVEL_TRIGGER (1 << 15) > #define IO_APIC_REDIR_MASKED (1 << 16) > >-struct io_apic_ops { >- void (*init)(void); >- unsigned int (*read)(unsigned int apic, unsigned int reg); >- void (*write)(unsigned int apic, unsigned int reg, unsigned int value); >- void (*modify)(unsigned int apic, unsigned int reg, unsigned int value); >-}; >- >-void __init set_io_apic_ops(const struct io_apic_ops *); >- > /* > * The structure of the IO-APIC: > */ >@@ -156,7 +148,6 @@ struct io_apic_irq_attr; > extern int io_apic_set_pci_routing(struct device *dev, int irq, > struct io_apic_irq_attr *irq_attr); > void setup_IO_APIC_irq_extra(u32 gsi); >-extern void ioapic_and_gsi_init(void); > extern void ioapic_insert_resources(void); > > int io_apic_setup_irq_pin_once(unsigned int irq, int node, struct io_apic_irq_attr *attr); >@@ -185,12 +176,35 @@ extern void mp_save_irq(struct mpc_intsrc *m); > > extern void disable_ioapic_support(void); > >+ >+void __init native_ioapic_init_mappings(void); >+unsigned int native_ioapic_read(unsigned int apic, unsigned int reg); >+void native_ioapic_write(unsigned int apic, unsigned int reg, >+ unsigned int val); >+void native_ioapic_modify(unsigned int apic, unsigned int reg, >+ unsigned int val); >+ >+static inline unsigned int io_apic_read(unsigned int apic, unsigned int reg) >+{ >+ return x86_ioapic.read(apic, reg); >+} >+ >+static inline void io_apic_write(unsigned int apic, unsigned int reg, >+ unsigned int value) >+{ >+ x86_ioapic.write(apic, reg, value); >+} >+ >+static inline void io_apic_modify(unsigned int apic, unsigned int reg, >+ unsigned int value) >+{ >+ x86_ioapic.modify(apic, reg, value); >+} > #else /* !CONFIG_X86_IO_APIC */ > > #define io_apic_assign_pci_irqs 0 > #define setup_ioapic_ids_from_mpc x86_init_noop > static const int timer_through_8259 = 0; >-static inline void ioapic_and_gsi_init(void) { } > static inline void ioapic_insert_resources(void) { } > #define gsi_top (NR_IRQS_LEGACY) > static inline int mp_find_ioapic(u32 gsi) { return 0; } >@@ -212,6 +226,10 @@ static inline int restore_ioapic_entries(void) > > static inline void mp_save_irq(struct mpc_intsrc *m) { }; > static inline void disable_ioapic_support(void) { } >+#define native_ioapic_init_mappings NULL >+#define native_ioapic_read NULL >+#define native_ioapic_write NULL >+#define native_ioapic_modify NULL > #endif > > #endif /* _ASM_X86_IO_APIC_H */ >diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h >index 517d476..a3730cc 100644 >--- a/arch/x86/include/asm/x86_init.h >+++ b/arch/x86/include/asm/x86_init.h >@@ -182,10 +182,18 @@ struct x86_msi_ops { > void (*restore_msi_irqs)(struct pci_dev *dev, int irq); > }; > >+struct x86_ioapic_ops { >+ void (*init)(void); >+ unsigned int (*read)(unsigned int apic, unsigned int reg); >+ void (*write)(unsigned int apic, unsigned int reg, unsigned int value); >+ void (*modify)(unsigned int apic, unsigned int reg, unsigned int value); >+}; >+ > extern struct x86_init_ops x86_init; > extern struct x86_cpuinit_ops x86_cpuinit; > extern struct x86_platform_ops x86_platform; > extern struct x86_msi_ops x86_msi; >+extern struct x86_ioapic_ops x86_ioapic; > > extern void x86_init_noop(void); > extern void x86_init_uint_noop(unsigned int unused); >diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c >index 0c3527b..9dcc7e3 100644 >--- a/arch/x86/kernel/apic/io_apic.c >+++ b/arch/x86/kernel/apic/io_apic.c >@@ -67,25 +67,6 @@ > #define for_each_irq_pin(entry, head) \ > for (entry = head; entry; entry = entry->next) > >-static void __init __ioapic_init_mappings(void); >-static unsigned int __io_apic_read(unsigned int apic, unsigned int reg); >-static void __io_apic_write(unsigned int apic, unsigned int reg, >- unsigned int val); >-static void __io_apic_modify(unsigned int apic, unsigned int reg, >- unsigned int val); >- >-static struct io_apic_ops io_apic_ops = { >- .init = __ioapic_init_mappings, >- .read = __io_apic_read, >- .write = __io_apic_write, >- .modify = __io_apic_modify, >-}; >- >-void __init set_io_apic_ops(const struct io_apic_ops *ops) >-{ >- io_apic_ops = *ops; >-} >- > /* > * Is the SiS APIC rmw bug present ? > * -1 = don't know, 0 = no, 1 = yes >@@ -313,24 +294,6 @@ static void free_irq_at(unsigned int at, struct irq_cfg *cfg) > irq_free_desc(at); > } > >-static inline unsigned int io_apic_read(unsigned int apic, unsigned int reg) >-{ >- return io_apic_ops.read(apic, reg); >-} >- >-static inline void io_apic_write(unsigned int apic, unsigned int reg, >- unsigned int value) >-{ >- io_apic_ops.write(apic, reg, value); >-} >- >-static inline void io_apic_modify(unsigned int apic, unsigned int reg, >- unsigned int value) >-{ >- io_apic_ops.modify(apic, reg, value); >-} >- >- > struct io_apic { > unsigned int index; > unsigned int unused[3]; >@@ -351,15 +314,15 @@ static inline void io_apic_eoi(unsigned int apic, unsigned int vector) > writel(vector, &io_apic->eoi); > } > >-static unsigned int __io_apic_read(unsigned int apic, unsigned int reg) >+unsigned int native_ioapic_read(unsigned int apic, unsigned int reg) > { > struct io_apic __iomem *io_apic = io_apic_base(apic); > writel(reg, &io_apic->index); > return readl(&io_apic->data); > } > >-static void __io_apic_write(unsigned int apic, unsigned int reg, >- unsigned int value) >+void native_ioapic_write(unsigned int apic, unsigned int reg, >+ unsigned int value) > { > struct io_apic __iomem *io_apic = io_apic_base(apic); > writel(reg, &io_apic->index); >@@ -372,8 +335,8 @@ static void __io_apic_write(unsigned int apic, unsigned int reg, > * > * Older SiS APIC requires we rewrite the index register > */ >-static void __io_apic_modify(unsigned int apic, unsigned int reg, >- unsigned int value) >+void native_ioapic_modify(unsigned int apic, unsigned int reg, >+ unsigned int value) > { > struct io_apic __iomem *io_apic = io_apic_base(apic); > >@@ -3910,12 +3873,7 @@ static struct resource * __init ioapic_setup_resources(int nr_ioapics) > return res; > } > >-void __init ioapic_and_gsi_init(void) >-{ >- io_apic_ops.init(); >-} >- >-static void __init __ioapic_init_mappings(void) >+void __init native_ioapic_init_mappings(void) > { > unsigned long ioapic_phys, idx = FIX_IO_APIC_BASE_0; > struct resource *ioapic_res; >diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c >index 8863888..2c5b801 100644 >--- a/arch/x86/kernel/setup.c >+++ b/arch/x86/kernel/setup.c >@@ -1022,7 +1022,7 @@ void __init setup_arch(char **cmdline_p) > init_cpu_to_node(); > > init_apic_mappings(); >- ioapic_and_gsi_init(); >+ x86_ioapic.init(); > > kvm_guest_init(); > >diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c >index 947a06c..df870d3 100644 >--- a/arch/x86/kernel/x86_init.c >+++ b/arch/x86/kernel/x86_init.c >@@ -18,6 +18,7 @@ > #include <asm/e820.h> > #include <asm/time.h> > #include <asm/irq.h> >+#include <asm/io_apic.h> > #include <asm/pat.h> > #include <asm/tsc.h> > #include <asm/iommu.h> >@@ -117,3 +118,10 @@ struct x86_msi_ops x86_msi = { > .teardown_msi_irqs = default_teardown_msi_irqs, > .restore_msi_irqs = default_restore_msi_irqs, > }; >+ >+struct x86_ioapic_ops x86_ioapic = { >+ .init = native_ioapic_init_mappings, >+ .read = native_ioapic_read, >+ .write = native_ioapic_write, >+ .modify = native_ioapic_modify, >+}; >-- >1.7.7.5 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 804347
:
572774
| 572775 |
572776
|
574485
|
574486