]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/patches/suse-2.6.27.31/patches.xen/xen3-patch-2.6.27.14-15
Move xen patchset to new version's subdir.
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.xen / xen3-patch-2.6.27.14-15
CommitLineData
00e5a55c
BS
1From: Greg Kroah-Hartman <gregkh@suse.de>
2Subject: Linux 2.6.27.15
3
4Upstream 2.6.27.15 release from kernel.org
5
6Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
7
8Automatically created from "patches.kernel.org/patch-2.6.27.14-15" by xen-port-patches.py
9
10--- sle11-2009-03-16.orig/arch/x86/mm/pageattr-xen.c 2009-03-16 16:38:32.000000000 +0100
11+++ sle11-2009-03-16/arch/x86/mm/pageattr-xen.c 2009-03-16 16:38:34.000000000 +0100
12@@ -602,6 +602,36 @@ out_unlock:
13 return 0;
14 }
15
16+static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr,
17+ int primary)
18+{
19+ /*
20+ * Ignore all non primary paths.
21+ */
22+ if (!primary)
23+ return 0;
24+
25+ /*
26+ * Ignore the NULL PTE for kernel identity mapping, as it is expected
27+ * to have holes.
28+ * Also set numpages to '1' indicating that we processed cpa req for
29+ * one virtual address page and its pfn. TBD: numpages can be set based
30+ * on the initial value and the level returned by lookup_address().
31+ */
32+ if (within(vaddr, PAGE_OFFSET,
33+ PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))) {
34+ cpa->numpages = 1;
35+ cpa->pfn = __pa(vaddr) >> PAGE_SHIFT;
36+ return 0;
37+ } else {
38+ WARN(1, KERN_WARNING "CPA: called for zero pte. "
39+ "vaddr = %lx cpa->vaddr = %lx\n", vaddr,
40+ cpa->vaddr);
41+
42+ return -EINVAL;
43+ }
44+}
45+
46 static int __change_page_attr(struct cpa_data *cpa, int primary)
47 {
48 unsigned long address = cpa->vaddr;
49@@ -612,17 +642,11 @@ static int __change_page_attr(struct cpa
50 repeat:
51 kpte = lookup_address(address, &level);
52 if (!kpte)
53- return 0;
54+ return __cpa_process_fault(cpa, address, primary);
55
56 old_pte = *kpte;
57- if (!__pte_val(old_pte)) {
58- if (!primary)
59- return 0;
60- WARN(1, KERN_WARNING "CPA: called for zero pte. "
61- "vaddr = %lx cpa->vaddr = %lx\n", address,
62- cpa->vaddr);
63- return -EINVAL;
64- }
65+ if (!__pte_val(old_pte))
66+ return __cpa_process_fault(cpa, address, primary);
67
68 if (level == PG_LEVEL_4K) {
69 pte_t new_pte;
70@@ -697,12 +721,7 @@ static int cpa_process_alias(struct cpa_
71 * mapping already:
72 */
73 if (!(within(cpa->vaddr, PAGE_OFFSET,
74- PAGE_OFFSET + (max_low_pfn_mapped << PAGE_SHIFT))
75-#ifdef CONFIG_X86_64
76- || within(cpa->vaddr, PAGE_OFFSET + (1UL<<32),
77- PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))
78-#endif
79- )) {
80+ PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT)))) {
81
82 alias_cpa = *cpa;
83 alias_cpa.vaddr = (unsigned long) __va(cpa->pfn << PAGE_SHIFT);
84--- sle11-2009-03-16.orig/arch/x86/pci/irq-xen.c 2009-03-16 16:38:32.000000000 +0100
85+++ sle11-2009-03-16/arch/x86/pci/irq-xen.c 2009-03-16 16:38:34.000000000 +0100
86@@ -579,6 +579,7 @@ static __init int intel_router_probe(str
87 case PCI_DEVICE_ID_INTEL_ICH7_1:
88 case PCI_DEVICE_ID_INTEL_ICH7_30:
89 case PCI_DEVICE_ID_INTEL_ICH7_31:
90+ case PCI_DEVICE_ID_INTEL_TGP_LPC:
91 case PCI_DEVICE_ID_INTEL_ESB2_0:
92 case PCI_DEVICE_ID_INTEL_ICH8_0:
93 case PCI_DEVICE_ID_INTEL_ICH8_1: