[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9b943722-c722-4a38-ab17-f07ef6d5c8c6@intel.com>
Date: Wed, 9 Oct 2024 08:27:51 -0700
From: Dave Hansen <dave.hansen@...el.com>
To: Neeraj Upadhyay <Neeraj.Upadhyay@....com>, linux-kernel@...r.kernel.org
Cc: tglx@...utronix.de, mingo@...hat.com, dave.hansen@...ux.intel.com,
Thomas.Lendacky@....com, nikunj@....com, Santosh.Shukla@....com,
Vasant.Hegde@....com, Suravee.Suthikulpanit@....com, bp@...en8.de,
David.Kaplan@....com, x86@...nel.org, hpa@...or.com, peterz@...radead.org,
seanjc@...gle.com, pbonzini@...hat.com, kvm@...r.kernel.org
Subject: Re: [RFC 02/14] x86/apic: Initialize Secure AVIC APIC backing page
On 9/13/24 04:36, Neeraj Upadhyay wrote:
> + sz = ALIGN(num_possible_cpus() * SZ_4K, SZ_2M);
> + backing_pages = kzalloc(sz, GFP_ATOMIC);
> + if (!backing_pages)
> + snp_abort();
Is this in an atomic context? If not, why the GFP_ATOMIC?
Second, this looks to be allocating a potentially large physically
contiguous chunk of memory, then handing it out 4k at a time. The loop is:
buf = alloc(NR_CPUS * PAGE_SIZE);
for (i = 0; i < NR_CPUS; i++)
foo[i] = buf + i * PAGE_SIZE;
but could be:
for (i = 0; i < NR_CPUS; i++)
foo[i] = alloc(PAGE_SIZE);
right?
Powered by blists - more mailing lists