Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F144625003
D9312.1775851785.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D9312.1775851785.diff
View Options
Index: sys/arm/arm/pmap-v6.c
===================================================================
--- sys/arm/arm/pmap-v6.c
+++ sys/arm/arm/pmap-v6.c
@@ -1160,11 +1160,11 @@
* Local CMAP1/CMAP2 are used for zeroing and copying pages.
* Local CMAP2 is also used for data cache cleaning.
*/
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
mtx_init(&pc->pc_cmap_lock, "SYSMAPS", NULL, MTX_DEF);
SYSMAP(caddr_t, pc->pc_cmap1_pte2p, pc->pc_cmap1_addr, 1);
SYSMAP(caddr_t, pc->pc_cmap2_pte2p, pc->pc_cmap2_addr, 1);
- SYSMAP(vm_offset_t, unused, pc->pc_qmap_addr, 1);
+ SYSMAP(vm_offset_t, pc->pc_qmap_pte2p, pc->pc_qmap_addr, 1);
/*
* Crashdump maps.
@@ -1217,6 +1217,7 @@
panic("%s: unable to allocate KVA", __func__);
pc->pc_cmap1_pte2p = pt2map_entry(pages);
pc->pc_cmap2_pte2p = pt2map_entry(pages + PAGE_SIZE);
+ pc->pc_qmap_pte2p = pt2map_entry(pages + (PAGE_SIZE * 2));
pc->pc_cmap1_addr = (caddr_t)pages;
pc->pc_cmap2_addr = (caddr_t)(pages + PAGE_SIZE);
pc->pc_qmap_addr = pages + (PAGE_SIZE * 2);
@@ -1584,7 +1585,7 @@
* to sync it even if the sync is only DSB.
*/
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
if (pte2_load(cmap2_pte2p) != 0)
@@ -5661,7 +5662,7 @@
if (ma != oma) {
pa = VM_PAGE_TO_PHYS(m);
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
if (pte2_load(cmap2_pte2p) != 0)
@@ -5754,7 +5755,7 @@
struct pcpu *pc;
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
if (pte2_load(cmap2_pte2p) != 0)
@@ -5781,7 +5782,7 @@
struct pcpu *pc;
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
if (pte2_load(cmap2_pte2p) != 0)
@@ -5811,7 +5812,7 @@
struct pcpu *pc;
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap1_pte2p = pc->pc_cmap1_pte2p;
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
@@ -5846,7 +5847,7 @@
int cnt;
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap1_pte2p = pc->pc_cmap1_pte2p;
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
@@ -5885,12 +5886,14 @@
vm_offset_t
pmap_quick_enter_page(vm_page_t m)
{
+ struct pcpu *pc;
pt2_entry_t *pte2p;
vm_offset_t qmap_addr;
critical_enter();
- qmap_addr = PCPU_GET(qmap_addr);
- pte2p = pt2map_entry(qmap_addr);
+ pc = get_pcpu();
+ qmap_addr = pc->pc_qmap_addr;
+ pte2p = pc->pc_qmap_pte2p;
KASSERT(pte2_load(pte2p) == 0, ("%s: PTE2 busy", __func__));
@@ -5902,11 +5905,13 @@
void
pmap_quick_remove_page(vm_offset_t addr)
{
+ struct pcpu *pc;
pt2_entry_t *pte2p;
vm_offset_t qmap_addr;
- qmap_addr = PCPU_GET(qmap_addr);
- pte2p = pt2map_entry(qmap_addr);
+ pc = get_pcpu();
+ qmap_addr = pc->pc_qmap_addr;
+ pte2p = pc->pc_qmap_pte2p;
KASSERT(addr == qmap_addr, ("%s: invalid address", __func__));
KASSERT(pte2_load(pte2p) != 0, ("%s: PTE2 not in use", __func__));
@@ -6212,7 +6217,7 @@
("%s: not on single page", __func__));
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
if (pte2_load(cmap2_pte2p) != 0)
@@ -6477,7 +6482,7 @@
struct pcpu *pc;
sched_pin();
- pc = pcpu_find(curcpu);
+ pc = get_pcpu();
cmap2_pte2p = pc->pc_cmap2_pte2p;
mtx_lock(&pc->pc_cmap_lock);
if (pte2_load(cmap2_pte2p) != 0)
Index: sys/arm/include/pcpu.h
===================================================================
--- sys/arm/include/pcpu.h
+++ sys/arm/include/pcpu.h
@@ -54,15 +54,13 @@
caddr_t pc_cmap1_addr; \
caddr_t pc_cmap2_addr; \
vm_offset_t pc_qmap_addr; \
- void *pc_qmap_pte; \
+ void *pc_qmap_pte2p; \
unsigned int pc_dbreg[32]; \
int pc_dbreg_cmd; \
char __pad[27]
#else
#define PCPU_MD_FIELDS \
- vm_offset_t qmap_addr; \
- void *pc_qmap_pte; \
- char __pad[149]
+ char __pad[157]
#endif
#ifdef _KERNEL
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 10, 8:09 PM (5 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28319233
Default Alt Text
D9312.1775851785.diff (4 KB)
Attached To
Mode
D9312: Clean up ARM per-cpu qmap fields
Attached
Detach File
Event Timeline
Log In to Comment