Skip to content

Commit e6383b1

Browse files
committed
Merge tag 'for-linus-5.7-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip
Pull more xen updates from Juergen Gross: - two cleanups - fix a boot regression introduced in this merge window - fix wrong use of memory allocation flags * tag 'for-linus-5.7-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: x86/xen: fix booting 32-bit pv guest x86/xen: make xen_pvmmu_arch_setup() static xen/blkfront: fix memory allocation flags in blkfront_setup_indirect() xen: Use evtchn_type_t as a type for event channels
2 parents ab6f762 + d6f34f4 commit e6383b1

File tree

18 files changed

+142
-123
lines changed

18 files changed

+142
-123
lines changed

arch/x86/xen/setup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ void xen_enable_syscall(void)
985985
#endif /* CONFIG_X86_64 */
986986
}
987987

988-
void __init xen_pvmmu_arch_setup(void)
988+
static void __init xen_pvmmu_arch_setup(void)
989989
{
990990
HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_4gb_segments);
991991
HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_writable_pagetables);

arch/x86/xen/xen-head.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ SYM_CODE_START(startup_xen)
3838
#ifdef CONFIG_X86_64
3939
mov initial_stack(%rip), %rsp
4040
#else
41-
mov pa(initial_stack), %esp
41+
mov initial_stack, %esp
4242
#endif
4343

4444
#ifdef CONFIG_X86_64

drivers/block/xen-blkfront.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include <linux/bitmap.h>
4848
#include <linux/list.h>
4949
#include <linux/workqueue.h>
50+
#include <linux/sched/mm.h>
5051

5152
#include <xen/xen.h>
5253
#include <xen/xenbus.h>
@@ -2189,10 +2190,12 @@ static void blkfront_setup_discard(struct blkfront_info *info)
21892190

21902191
static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
21912192
{
2192-
unsigned int psegs, grants;
2193+
unsigned int psegs, grants, memflags;
21932194
int err, i;
21942195
struct blkfront_info *info = rinfo->dev_info;
21952196

2197+
memflags = memalloc_noio_save();
2198+
21962199
if (info->max_indirect_segments == 0) {
21972200
if (!HAS_EXTRA_REQ)
21982201
grants = BLKIF_MAX_SEGMENTS_PER_REQUEST;
@@ -2224,7 +2227,7 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
22242227

22252228
BUG_ON(!list_empty(&rinfo->indirect_pages));
22262229
for (i = 0; i < num; i++) {
2227-
struct page *indirect_page = alloc_page(GFP_NOIO);
2230+
struct page *indirect_page = alloc_page(GFP_KERNEL);
22282231
if (!indirect_page)
22292232
goto out_of_memory;
22302233
list_add(&indirect_page->lru, &rinfo->indirect_pages);
@@ -2235,15 +2238,15 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
22352238
rinfo->shadow[i].grants_used =
22362239
kvcalloc(grants,
22372240
sizeof(rinfo->shadow[i].grants_used[0]),
2238-
GFP_NOIO);
2241+
GFP_KERNEL);
22392242
rinfo->shadow[i].sg = kvcalloc(psegs,
22402243
sizeof(rinfo->shadow[i].sg[0]),
2241-
GFP_NOIO);
2244+
GFP_KERNEL);
22422245
if (info->max_indirect_segments)
22432246
rinfo->shadow[i].indirect_grants =
22442247
kvcalloc(INDIRECT_GREFS(grants),
22452248
sizeof(rinfo->shadow[i].indirect_grants[0]),
2246-
GFP_NOIO);
2249+
GFP_KERNEL);
22472250
if ((rinfo->shadow[i].grants_used == NULL) ||
22482251
(rinfo->shadow[i].sg == NULL) ||
22492252
(info->max_indirect_segments &&
@@ -2252,6 +2255,7 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
22522255
sg_init_table(rinfo->shadow[i].sg, psegs);
22532256
}
22542257

2258+
memalloc_noio_restore(memflags);
22552259

22562260
return 0;
22572261

@@ -2271,6 +2275,9 @@ static int blkfront_setup_indirect(struct blkfront_ring_info *rinfo)
22712275
__free_page(indirect_page);
22722276
}
22732277
}
2278+
2279+
memalloc_noio_restore(memflags);
2280+
22742281
return -ENOMEM;
22752282
}
22762283

drivers/xen/events/events_2l.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,37 +53,37 @@ static void evtchn_2l_bind_to_cpu(struct irq_info *info, unsigned cpu)
5353
set_bit(info->evtchn, BM(per_cpu(cpu_evtchn_mask, cpu)));
5454
}
5555

56-
static void evtchn_2l_clear_pending(unsigned port)
56+
static void evtchn_2l_clear_pending(evtchn_port_t port)
5757
{
5858
struct shared_info *s = HYPERVISOR_shared_info;
5959
sync_clear_bit(port, BM(&s->evtchn_pending[0]));
6060
}
6161

62-
static void evtchn_2l_set_pending(unsigned port)
62+
static void evtchn_2l_set_pending(evtchn_port_t port)
6363
{
6464
struct shared_info *s = HYPERVISOR_shared_info;
6565
sync_set_bit(port, BM(&s->evtchn_pending[0]));
6666
}
6767

68-
static bool evtchn_2l_is_pending(unsigned port)
68+
static bool evtchn_2l_is_pending(evtchn_port_t port)
6969
{
7070
struct shared_info *s = HYPERVISOR_shared_info;
7171
return sync_test_bit(port, BM(&s->evtchn_pending[0]));
7272
}
7373

74-
static bool evtchn_2l_test_and_set_mask(unsigned port)
74+
static bool evtchn_2l_test_and_set_mask(evtchn_port_t port)
7575
{
7676
struct shared_info *s = HYPERVISOR_shared_info;
7777
return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
7878
}
7979

80-
static void evtchn_2l_mask(unsigned port)
80+
static void evtchn_2l_mask(evtchn_port_t port)
8181
{
8282
struct shared_info *s = HYPERVISOR_shared_info;
8383
sync_set_bit(port, BM(&s->evtchn_mask[0]));
8484
}
8585

86-
static void evtchn_2l_unmask(unsigned port)
86+
static void evtchn_2l_unmask(evtchn_port_t port)
8787
{
8888
struct shared_info *s = HYPERVISOR_shared_info;
8989
unsigned int cpu = get_cpu();
@@ -173,7 +173,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
173173
/* Timer interrupt has highest priority. */
174174
irq = irq_from_virq(cpu, VIRQ_TIMER);
175175
if (irq != -1) {
176-
unsigned int evtchn = evtchn_from_irq(irq);
176+
evtchn_port_t evtchn = evtchn_from_irq(irq);
177177
word_idx = evtchn / BITS_PER_LONG;
178178
bit_idx = evtchn % BITS_PER_LONG;
179179
if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx))
@@ -228,7 +228,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
228228

229229
do {
230230
xen_ulong_t bits;
231-
int port;
231+
evtchn_port_t port;
232232

233233
bits = MASK_LSBS(pending_bits, bit_idx);
234234

0 commit comments

Comments
 (0)