lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 13 Apr 2017 13:45:26 -0600 From: "Baicar, Tyler" <tbaicar@...eaurora.org> To: Borislav Petkov <bp@...en8.de> Cc: christoffer.dall@...aro.org, marc.zyngier@....com, pbonzini@...hat.com, rkrcmar@...hat.com, linux@...linux.org.uk, catalin.marinas@....com, will.deacon@....com, rjw@...ysocki.net, lenb@...nel.org, matt@...eblueprint.co.uk, robert.moore@...el.com, lv.zheng@...el.com, nkaje@...eaurora.org, zjzhang@...eaurora.org, mark.rutland@....com, james.morse@....com, akpm@...ux-foundation.org, eun.taik.lee@...sung.com, sandeepa.s.prabhu@...il.com, labbott@...hat.com, shijie.huang@....com, rruigrok@...eaurora.org, paul.gortmaker@...driver.com, tn@...ihalf.com, fu.wei@...aro.org, rostedt@...dmis.org, bristot@...hat.com, linux-arm-kernel@...ts.infradead.org, kvmarm@...ts.cs.columbia.edu, kvm@...r.kernel.org, linux-kernel@...r.kernel.org, linux-acpi@...r.kernel.org, linux-efi@...r.kernel.org, devel@...ica.org, Suzuki.Poulose@....com, punit.agrawal@....com, astone@...hat.com, harba@...eaurora.org, hanjun.guo@...aro.org, john.garry@...wei.com, shiju.jose@...wei.com, joe@...ches.com, gengdongjiu@...wei.com, xiexiuqi@...wei.com Subject: Re: [PATCH V14 01/10] acpi: apei: read ack upon ghes record consumption On 4/11/2017 11:15 AM, Borislav Petkov wrote: > On Tue, Mar 28, 2017 at 01:30:31PM -0600, Tyler Baicar wrote: >> A RAS (Reliability, Availability, Serviceability) controller >> may be a separate processor running in parallel with OS >> execution, and may generate error records for consumption by >> the OS. If the RAS controller produces multiple error records, >> then they may be overwritten before the OS has consumed them. >> >> The Generic Hardware Error Source (GHES) v2 structure >> introduces the capability for the OS to acknowledge the >> consumption of the error record generated by the RAS >> controller. A RAS controller supporting GHESv2 shall wait for >> the acknowledgment before writing a new error record, thus >> eliminating the race condition. >> >> Add support for parsing of GHESv2 sub-tables as well. >> >> Signed-off-by: Tyler Baicar <tbaicar@...eaurora.org> >> CC: Jonathan (Zhixiong) Zhang <zjzhang@...eaurora.org> >> Reviewed-by: James Morse <james.morse@....com> >> --- >> drivers/acpi/apei/ghes.c | 49 +++++++++++++++++++++++++++++++++++++++++++++--- >> drivers/acpi/apei/hest.c | 7 +++++-- >> include/acpi/ghes.h | 5 ++++- >> 3 files changed, 55 insertions(+), 6 deletions(-) > ... > >> @@ -249,10 +254,18 @@ static struct ghes *ghes_new(struct acpi_hest_generic *generic) >> ghes = kzalloc(sizeof(*ghes), GFP_KERNEL); >> if (!ghes) >> return ERR_PTR(-ENOMEM); >> + >> ghes->generic = generic; >> + if (IS_HEST_TYPE_GENERIC_V2(ghes)) { >> + rc = apei_map_generic_address( >> + &ghes->generic_v2->read_ack_register); > Yeah, that linebreak just to keep the 80-cols rule makes the code ugly > and hard to read. > > Please put that mapping and unmapping in wrappers called > map_gen_v2(ghes) and unmap_gen_v2(ghes) or so, so that you can call them > wherever needed. Thus should make the flow a bit more understandable > what's going on and you won't have to repeat the unmapping lines in > ghes_fini(). Hello Boris, Thank you for the feedback. I will make this change in the next version. >> @@ -649,6 +669,23 @@ static void ghes_estatus_cache_add( >> rcu_read_unlock(); >> } >> >> +static int ghes_ack_error(struct acpi_hest_generic_v2 *generic_v2) >> +{ >> + int rc; >> + u64 val = 0; >> + >> + rc = apei_read(&val, &generic_v2->read_ack_register); >> + if (rc) >> + return rc; >> + val &= generic_v2->read_ack_preserve << >> + generic_v2->read_ack_register.bit_offset; >> + val |= generic_v2->read_ack_write << >> + generic_v2->read_ack_register.bit_offset; > Yeah, let them stick out, it more readable this way. Line spacing is > helpful too: > > ... > rc = apei_read(&val, &generic_v2->read_ack_register); > if (rc) > return rc; > > val &= generic_v2->read_ack_preserve << generic_v2->read_ack_register.bit_offset; > val |= generic_v2->read_ack_write << generic_v2->read_ack_register.bit_offset; > > return apei_write(val, &generic_v2->read_ack_register); > } I will make this change in the next version. Thanks, Tyler >> + rc = apei_write(val, &generic_v2->read_ack_register); >> + >> + return rc; >> +} >> + >> static int ghes_proc(struct ghes *ghes) >> { >> int rc; -- Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Powered by blists - more mailing lists